質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.61%

  • SQL Server

    572questions

    SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

  • VMware

    224questions

    VMwareとは、 ハードウェアで動作するOS上で仮想マシンを作成、実行するソフトウェアです。 Windows上でUNIX系OSを動作させたり、他のOS上で別の仮想OSを動作することが可能です。

  • IIS

    181questions

    IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

  • ASP

    61questions

    ASP(Active Server Pages) あるいはClassic ASP (ASP Classic)は、マイクロソフト社開発した動的なウェブページ製作に利用可能なサーバー側のスプリクトエンジンです。

  • Windows XP

    7questions

    Windows XPは、2001年にMicrosoft社が発売したOSです。 一般家庭向けの「Windows XP Home Edition」とビジネス用途向けの「Windows XP Professional」の2つがあり、 一般家庭向けのWindowsでは初めてNTカーネルが採用されました。

ASPファイルにブラウザからアクセスしようとしたが、意図していたものと異なる

受付中

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,225
退会済みユーザー

退会済みユーザー

MacOSXのVMWare fusionでゲストOSとしてWindows XPを立ち上げています。

Windows XPで、IIS, 管理とモニターツールをインストールし、SQL Server 2005 Express Edition, Microsoft SQL Server Management Studio Expressを用いてアプリケーションを作成しました。

C:¥Inetpub¥wwwroot¥に置いたDefault.aspxをブラウザから閲覧しようと思い、ブラウザでhttp://192.168.xxx.xxx/Default.aspxのページにアクセスしたのですが、本来ログインフォームを経由してログイン成功するはずが、ログインフォームを経由せずにログイン成功の画面が表示されてしまいます。

なんども試してみたのですが、自分だけでは解決できそうになく、質問を投稿させていただきました。
原因、改善方法をご教授いただけないでしょうか

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • BlueMoon

    2015/09/18 08:05

    ログインフォームはDefault.aspxでログイン成功画面は別のaspxファイルとの理解で良いですか? 手動でDBのレコード削除(もしくはusername変更)の後、ブラウザアクセスした結果を教えて頂けないでしょうか。

    キャンセル

回答 2

0

こんばんは。

手元にXPの環境が残っていないので、同じような環境(バージョン)で確認をする事ができないのですが
「認証」の方法によって手掛かりを探っていく部分が大きく違ってくるように思います。

作成したアプリケーションについて、以下のような情報があると分かり易くなるのではないかと思います。
・Windows認証などを利用している
・アプリケーションで独自の認証をしている
 →Windowsのユーザーとは無関係にアプリケーション(自前)でユーザーを管理



追記 2015/09/21 16:36頃
単純に「ログオン」ボタンを押すと、「ログオン成功と書かれたLabel」のVisible値を変更する物を書いてみました。こちらで確認するとVisible値が正しく設定されました。(Windows 7 SP1 + IIS 7 + IE 8)
以下のコードを配置して実行したときの表示/非表示 動作を確認頂けると良いかも知れません。

loginform.aspx
<%@ Page Language="C#" CodeFile="loginform.aspx.cs" Inherits="LoginForm" %>
<HTML>
  <HEAD>
    <TITLE>ログインフォーム</TITLE>
  </HEAD>

  <BODY>
    <form runat="server">
      <DIV><CENTER><B>ログインフォーム</B></CENTER></DIV>
      <BR>
      <TABLE border="1" bgcolor="#aaaaee">
        <TR>
          <TD>ユーザー名</TD>
          <TD><asp:TextBox runat="server" id="username"/></TD>
        </TR>
        <TR>
          <TD>パスワード</TD>
          <TD><asp:TextBox runat="server" id="passwd"/></TD>
        </TR>
      </TABLE>
      <BR>
      <asp:Button runat="server" id="loginbtn" text="ログオン" OnClick="loginbtn_OnClick"/>
      <asp:Label runat="server" id="label1" text="ログイン成功" visible="false"/>
    </form>
  </BODY>
</HTML>

loginform.aspx.cs
using System;

public partial class LoginForm : System.Web.UI.Page
{
  protected void loginbtn_OnClick(object sender, EventArgs e)
  {
    label1.Visible = !label1.Visible;
  }
}


追記 2015/09/22 21:04頃
IISで正しく.NET Frameworkが認識されているか確認するため、ブラウザであえて存在しないaspxを指定してみる方法があると思います。エラー画面の赤枠部分にNET FrameworkとASP.NETのバージョンが表示される筈なので、ここに多分2.0の表示がされると思います。
# もしも、「ページが見つかりません」の画面が表示されるようだと、IISがNET Frameworkを正しく認識できていないのかも知れません。
イメージ説明
また、上記で正しくバージョンが表示された場合は<asp:XXX>のタグの入ったaspxページをブラウザで開き、右クリックメニューの「ソースの表示」をしてみて中身がそのまま(aspタグがそのままの形で残っている)だとしたら、IIS側できちんと処理がされていない事になりそうです。



他に確認方法で思い付くとしたら、「管理ツール」の「インターネット インフォメーション サービス」でWebサイトのプロパティを開いて、「ASP.NET」のタブが存在するか?ですかね。
イメージ説明

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/09/17 22:51

    情報が不足していて、大変申し訳ありません。

    Microsoft SQL Server Management Studio Expressにて、データベースを作成し、そのデータベースに一致したレコードで認証できる想定です。
    ログイン画面は、よくあるUsernameとPasswordの2つの入力を要求するような画面となっています。
    Default.aspxはC#のコードとなっており、
    conn = "SELECT first_name + ' ' + last_name + ' ' + middle_name FROM users WHERE username = '" + Request.QueryString["login"] + "' " + "AND password = '" + Request.QueryString["password"] + "'";
    という箇所でSQL文が定義されています。
    ユーザがUsernameとPasswordを入力後、その2つのパラメータを元にSQL文をデータベースに発行し、一致するレコードがあれば、ログイン成功ということで、ログイン成功!という文字を表示するように条件分岐するようになっています。

    キャンセル

  • 2015/09/17 22:52

    あ、一応ですが、先ほど質問を投稿した時はゲストユーザーだったのですが、たった今投稿してここにコメントしています。

    キャンセル

  • 2015/09/17 22:54

    投稿 → 登録

    キャンセル

  • 2015/09/17 23:09

    上記コメントで間違いがありました。
    正確には、Default.aspx.csはC#のコードとなっており、
    となります。
    Default.aspxとDefault.aspx.csの2つのファイルがあります

    キャンセル

  • 2015/09/17 23:46

    今、コードを元に調べているのですが、どうも
    aspxファイルにてVisible = "False"としても表示されてしまう現象が起きてしまっているようです(実際にブラウザで開いて、ソースを表示でFalseになっているか確認することで検証)
    これが原因なのでしょうか?
    aspx.csファイルをいじっても、アクセスしたWebページに全く反映されません。.NET Frameworkを入れたし、C#のコードがaspxファイルに読み込まれているはずなので、理由がよくわからないです。

    キャンセル

  • 2015/09/18 00:25

    aspxファイルの先頭で
    <%@ Page Language="C#" AutoEventWireup="true" ValidateRequest="false" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    と記述しているのですが、CodeFile="Default.aspx.cs"の部分を試しに消してブラウザで再アクセスしたところ、表示結果が変わりませんでした(ログインフォームが表示されず、ログイン成功しました!と表示される)。

    aspxファイルでは、ログインフォームのVisible属性がTrue、ログイン成功しました!と表示する箇所のVisible属性がFalseとなっており、aspx.csファイルでログイン成功した場合の条件分岐でVisible属性を切り替えるようになっているはずなのですが・・・
    Visible属性が機能していないのでしょうか・・・

    キャンセル

  • 2015/09/18 08:20

    情報ありがとうございます。

    頂いた内容から考えると、
    (1)ログインボタン押下(?)のイベント受け取り
    (2)入力されたユーザー名、パスワードを利用してSQL Serverへ問い合わせ
    (3)問い合わせ結果を受け取り
    (4)結果の判定(OKならVisibleをtrueに変更)
    の流れになっているように思えますので、これを上から順に潰して行くと良いかと思います。


    下のような方法で確認ができないでしょうか
    (1)ボタンか何かは分かりませんが、トリガとなるイベントを受け取ってすぐに(SQL Server問い合わせをしないで)Visibleをtrueに変更してみる
     →期待通りに処理が開始されているか?
    (2)SQLトレース(Express EditionだとProfilerが含まれていないと思いますので、https://sites.google.com/site/sqlprofiler/などから同様のツールを入手)
     →期待しているSQL文がきちんと発行されているか?
    (3)受け取った結果(SQL)を判定前にTextBoxでも何でも良いので、表示できる要素に表示する
     →期待している結果が返ってきているか?
    (4)判定部分を再度確認してみる

    上記で、期待通りになっていないポイントが絞り込めるのではないかと思います。

    キャンセル

  • 2015/09/20 15:21

    いろいろ試してみたのですが、C#が読み込まれていない、またaspxファイルの挙動がおかしい(Visibleが機能してない?)ようです。
    OSはWindows XP SP2、アップデートを一切行わず、.NETFramework2を用いています。
    また、ブラウザはIEを使用しているのですが、IEの不具合か何かなんでしょうか・・・?

    キャンセル

  • 2015/09/20 15:24

    ちなみに、IEはデフォルトのままで、バージョン6.0.2900.2180.xpsp_sp2_rtm.040803-2158です。

    キャンセル

  • 2015/09/20 20:24

    うまく行かないですか・・・
    こちらで、簡単な環境を作って確認してみます。

    一点、確認になりますが
    「Default.aspx.cs」内でVisible値の変更などを記述しているクラスの名前は「_Default」でしょうか?

    キャンセル

  • 2015/09/22 02:12

    お手数取らせてしまって、大変申し訳ありません・・・

    はい。Default.aspx.csファイルは以下のようになっています。


    ```c#
    public partial class _Default : System.Web.UI.Page {
    protected SqlConnection objConn = new SqlConnection(ConfigurationManager.ConnectionStrings["test"].ToString());
    protected string conn = "";

    protected void Page_Load(object sender, EventArgs e) {
    //usernameとpasswordが入力されていたら、Response.Write()でusername.ToString() + password.ToString()を返し、
       //conn = "SELECT first_name + ' ' + last_name + ' ' + middle_name FROM users WHERE username = '" + Request.QueryString["login"] + "' " + "AND password = '" + Request.QueryString["password"] + "'";を定義し、
       //Login()関数を呼び出します。
       //入力されていなかったら何もしません。
    }

    public void btnSubmit_Clicked(object o, EventArgs e) {
        //ボタンがクリックされた際のイベントハンドラで、
        //ここで、Visibleによる制御を行ってメッセージを表示させています。
        //まず、usernameやpasswordが入力されているかチェックし、されていなかった場合エラーメッセージを表示、どちらも入力されていれば、
        //conn = "SELECT first_name + ' ' + last_name + ' ' + middle_name FROM users WHERE username = '" + txtLogin.Text + "' " + "AND password = '" + txtPassword.Text + "'";を定義してLogin()関数を呼び出します。
    }

    public void Login() {
        //定義されたconn変数を元に、SQLを実際に実行し、値が得られればログイン成功!と表示されます。
    }
    }
    ```

    キャンセル

  • 2015/09/22 02:39

    なぜ、挙動がおかしかったのか、ハッキリ分かったような気がします・・・
    ただ、どうしてそのようなことになったのかがわからないですが・・・(ASP.NET初心者なので、何か設定ミスなどをしたのかもしれません)

    どうも、aspが動いていないみたいです
    wwwroot配下に置いて、動作させてみたところHTMLの表示はされましたが、
    <asp:...タグで囲まれたフォームや、ボタンは表示されませんでした。

    キャンセル

  • 2015/09/22 02:43

    Windowsコンポーネントの追加と削除にて、
    IISのチェックボックスから詳細へ、FTPサービスを選択しOK
    管理とモニターツールのチェックボックスを選んでOK
    インストール実行
    という手順を踏んだのですが、これではASPは動作しないのでしょうか?

    キャンセル

  • 2015/09/22 17:18

    こんにちは。

    状況ありがとうございます。
    頂いた内容から考えると、.NET Frameworkがインストールされていない可能性があるように思えました。
    .NET Frameworkはインストールしてありますでしょうか?

    まだ、インストールしていないようでしたら以下から入手できます。
    ・.NET Framework 4.0(XP SP3)
     http://www.microsoft.com/ja-jp/download/details.aspx?id=17718
    ・.NET Framework 3.5 SP1(XP SP3以前)
     http://www.microsoft.com/ja-jp/download/details.aspx?id=25150

    キャンセル

  • 2015/09/22 20:25

    こんばんは。

    プログラムの変更と削除を確認してみたところ
    Microsoft .NET Framework 2.0 Service Pack 1が入っているようです(現在インストールされているプログラムの一覧に出てくるので大丈夫だと思います)。
    .NET Framework 2.0を使用する予定だったので、意図通りインストールできていると思われます。

    キャンセル

  • 2015/09/22 21:09

    こんばんは。
    なかなか上手く行ってくれないですね・・・
    回答本文の方へ、追記をしました。
    私の方でも、仮想マシンでXPを作ってIISを追加、NET Frameworkのインストールをするとテスト用につくった「ログインフォームのaspx」で正常動作を確認出来たのですが。。

    .NET Frameworkのバージョンが違ってしまっていますが、以下の組み合わせです
    Windows XP SP3 + IIS 5.1 + .NET Framework 4.0 + IE 6.0
    (まっさらのXP SP3へ.NET Frameworkを足しただけです)

    キャンセル

  • 2015/09/22 21:34

    インストールの順番によってマッピングがうまくされないようです。
    ASP.NET IIS 登録ツール(aspnet_regiis.exe)で解決したケースが紹介されていました。
    http://blog.livedoor.jp/khazad_lefty/archives/51467492.html

    Microsoft
    https://msdn.microsoft.com/ja-jp/library/k6h9cz8h%28v=vs.80%29.aspx

    キャンセル

  • 2015/09/22 21:53

    なんと・・・
    試しにブラウザで関係のないaspxファイルを参照させたところ、「ページが見つかりません」と表示され、管理ツールの方も確認してみたところ、ASP.NETというタブはあるものの、バージョンが空欄になってしまっていました・・・

    キャンセル

  • 2015/09/22 21:56

    どうやら、IISがうまく認識できていないようですね・・・
    これなら、今まで思った通りにならなかったことと合点がいきます

    キャンセル

0

いただいたURL(http://blog.livedoor.jp/khazad_lefty/archives/51467492.html)の通りにして、再起動したところ、見事、aspxファイルが動作しました・・・(泣)

私がもともと動かしたかったaspxファイルもきちんと動作して・・・感無量です・・・
本当にありがとうございます!!!

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/09/22 23:35

    解決おめでとうございます!!
    本当に良かったです。

    キャンセル

  • 2015/09/23 01:27

    ありがとうございます!! 長い間原因がわからず、ほとほと困り果てていたので本当にたすかりました!これで関連する作業を進行できます!!

    せっかくド素人に付き合っていただいたところ申し訳ないのですが・・・teratailを利用するのは初めてで、ゲストとして質問してしまったのでこの質問を解決状態にする方法がわかりません・・・・
    本当に申し訳ないです・・・(泣)

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • SQL Server

    572questions

    SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

  • VMware

    224questions

    VMwareとは、 ハードウェアで動作するOS上で仮想マシンを作成、実行するソフトウェアです。 Windows上でUNIX系OSを動作させたり、他のOS上で別の仮想OSを動作することが可能です。

  • IIS

    181questions

    IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

  • ASP

    61questions

    ASP(Active Server Pages) あるいはClassic ASP (ASP Classic)は、マイクロソフト社開発した動的なウェブページ製作に利用可能なサーバー側のスプリクトエンジンです。

  • Windows XP

    7questions

    Windows XPは、2001年にMicrosoft社が発売したOSです。 一般家庭向けの「Windows XP Home Edition」とビジネス用途向けの「Windows XP Professional」の2つがあり、 一般家庭向けのWindowsでは初めてNTカーネルが採用されました。