locked
仮想ディレクトリで500内部エラー RRS feed

  • 質問

  • Windows2008R2/IIS7.5 にてイントラネットで使用しています。

    仮想ディレクトリに置いたhtmlファイルにクライアントからアクセスすると「500 内部エラー」が発生し、再読込ボタンを押すと正しいコンテンツが表示されるようになります。

    IEの「エラーメッセージの簡易表示」はオフにしていますが、追加の情報は表示されません。また、FireFoxでも同じエラーが表示されます。

    何処に問題があるのか、さっぱり判らない状態でして、ヒントなり頂けると助かります。
    関係あるかわかりませんが「Webサイト」を二つ作成し、ホスト名で振り分けています。

    2013年9月25日 7:34

回答

  • > ファイル web.config には IUSR の読み取り権が付与されていることを確認しました。

    IIS_IUSRS に読み取り権限を与えなければならないのでは?

    かるあさんの紹介されたページの「エラー メッセージ 2 の原因」に以下のように書いてあります。

    "IIS_IUSRS グループには、ApplicationHost.config ファイル、Web.config ファイル、または/アプリケーションで仮想ディレクトリの IIS の適切なアクセス許可がありません。"

    確認してみてください。

    IIS_IUSRS とは何かについては以下のページを見てください。

    IIS 7.0 での組み込みユーザーとグループ アカウントとは
    http://technet.microsoft.com/ja-jp/library/dd939094.aspx

    • 回答としてマーク S.Hara 2013年9月27日 10:25
    2013年9月27日 7:39

すべての返信

  • ・IISのログを確認する。

    ・IISの設定を変更してエラーの詳細が出力されるようにする。

    ・失敗した要求トレースの規則を作成して確認する。

    ・web.config ファイルを削除してみる。

    ・拡張子を .html から .asp や .aspx に変更してみる。

    ・パケットキャプチャして失敗時と成功時の比較をする。

    といった感じでしょうか。

    2013年9月26日 0:30
  • 藤森様、貴重なアドバイスありがとうございました。
    エラーの詳細を出力されるようにしたところ、下記が出力されるようになりました。

      HTTP エラー 500.19 - Internal Server Error
      ページに関連する構成データが無効であるため、要求されたページにアクセスできません。
      エラー コード 0x80070005

    仮想ディレクトリには web.config ファイルは無いので作成し、また、
    ApplicationHost.config ファイルがあるフォルダへの IUSR の読み取り権を追加してみました。

    エラーが発生しても、二度目のアクセスからは正常に表示されて、しばらくの間は再現できないので、
    以上で改善されたかは不明です。当面、様子を見ます。

    2013年9月26日 8:08
  • ドメイン環境でパスワードがかかっているページにアクセスしているのでしょうか。

    その場合は、 setspn を使って http を登録してあげると解決するかもしれません。

    2013年9月26日 9:07
  • 2回め以降は問題ないという話なので、違うかもしれませんがこのサポート技術情報は参考になりませんか?

    http://support.microsoft.com/kb/942055/ja

    また、IISを再起動してみたら同じ現象が発生したりしませんか?

    2013年9月26日 12:39
  • IISを再起動したところ、必ず再現するようになりました。web.config を削除したところ、元どおり「エラー発生後に再読み込みをすると、しばらくは期待通り動作するよう」になりました。再現する方法が判ったので一歩前進です。

    エラーメッセージの全文は下記の通りでした。

    | HTTP エラー 500.19 - Internal Server Error
    | ページに関連する構成データが無効であるため、要求されたページにアクセスできません。
    |
    | エラー情報の詳細
    |モジュール IIS Web Core
    | 通知 BeginRequest
    | ハンドラー 未定義です
    | エラー コード 0x80070005
    | 構成エラー アクセス許可がないため構成ファイルを読み取ることができません 
    | 構成ファイル \\?\H:\path\to\htdocs\group1\web.config
    | 要求された URL http://www2.test.example.com:80/group1/index.htm
    | 物理パス H:\path\to\htdocs\group1\index.htm
    | ログオン方法 未定義です
    | ログオン ユーザー 未定義です

    ファイル web.config には IUSR の読み取り権が付与されていることを確認しました。親フォルダから継承しています。

    サーバはドメインに参加していますが、サイトは匿名認証で公開していて、ユーザ認証はしていません。が、エラーメッセージからすると、こちらが設定したつもりの 匿名認証 IUSR では稼働していないのかな・・・?

    IIS のログにはユーザー名は記録されていない (cs-username は -) ので、匿名認証に違いは無いと思うのですが・・・という状態です。

    「構成ファイル」でサーバ名が ? と記載されているのも気になるのですが、他にIISが無いので、どのように表示されるべきなのかが分かりません。


    • 編集済み S.Hara 2013年9月27日 2:35
    2013年9月27日 2:31
  • > ファイル web.config には IUSR の読み取り権が付与されていることを確認しました。

    IIS_IUSRS に読み取り権限を与えなければならないのでは?

    かるあさんの紹介されたページの「エラー メッセージ 2 の原因」に以下のように書いてあります。

    "IIS_IUSRS グループには、ApplicationHost.config ファイル、Web.config ファイル、または/アプリケーションで仮想ディレクトリの IIS の適切なアクセス許可がありません。"

    確認してみてください。

    IIS_IUSRS とは何かについては以下のページを見てください。

    IIS 7.0 での組み込みユーザーとグループ アカウントとは
    http://technet.microsoft.com/ja-jp/library/dd939094.aspx

    • 回答としてマーク S.Hara 2013年9月27日 10:25
    2013年9月27日 7:39
  • ありがとうございました!
    IIS_IUSRS にアクセス権を付与したところ解決しました。

    確認してみるとデフォルトの C:\inetpub\wwwroot にもIIS_IUSRSに権利がありますね。確認不足でした。

    2013年9月27日 10:29