web-dev-qa-db-ja.com

詳細500エラーメッセージ、ASP + IIS 7.5

IIS 7.5、2008rc2、従来のASP、500エラーメッセージ:

内部サーバーエラーが発生したため、ページを表示できません。

より詳細なエラーを表示するためにIISを構成する方法を知る必要があります。
ASP設定内のすべてのデバッグオプションをtrueに設定してみました。
しかし、それはうまくいきませんでした。誰かが私を手伝ってくれる?

180
egidiocs

私は同じ問題に遭遇し、 Alex Kと同じように を修正しました。

「ブラウザにエラーを送信」が機能していない場合は、これも設定します。

エラーページ - > 500 - >機能設定の編集 - > "詳細エラー"

enter image description here

また、返信されたエラーページの内容が非常に短く、IEを使用している場合、IEはサーバーから返信された有用な内容を無視し、代わりに独自の一般的なエラーページを表示します。あなたは、IEのオプションでこれをオフにするか、別のブラウザを使用することができます。

219
Vaclav Elias

リモートサーバーにいる場合は、web.configファイルを次のように設定できます。

<configuration>
<system.webServer>
    <httpErrors errorMode="Detailed" />
    <asp scriptErrorSentToBrowser="true"/>
</system.webServer>
<system.web>
    <customErrors mode="Off"/>
    <compilation debug="true"/>
</system.web>
88
safhac

IIS adminのサイトのホーム画面で[ASP]をダブルクリックし、[デバッグのプロパティ]を展開して[エラーをブラウザに送信]を有効にし、[適用]をクリックします。

ホーム画面の[エラーページ]で[500]、[機能設定の編集]、[詳細エラー]の順に選択します。

IIS 8.0(Windows Server 2012)にも同じ手順が適用されます。

46
Alex K.

Vaclav's and Alex's 答えてみた後も、IEで "Show friendly HTTP error messages"を無効にする必要がありました

enter image description here

42
Tim Partridge

web.configの下に

<system.webServer>

行を置き換える(または追加する)

<httpErrors errorMode="Detailed"></httpErrors>

<httpErrors existingResponse="PassThrough" errorMode="Detailed"></httpErrors>

これは、デフォルトでIIS7が、アプリケーションによって生成された4xxや5xxなどのHTTPステータスコードをさらにパイプラインの途中で傍受するためです。

次に、「ASP」セクションの下の「ブラウザへのエラー送信」を有効にし、「エラーページ/機能設定の編集」で「詳細エラー」を選択します。

また、IIS_IUSRS組み込みグループに、Webサイトフォルダの書き込み権限を付与します。

19
Niente00

TLDR:まずパイプラインのどこからエラーが発生しているのかを判断し(エラーに似たもののスクリーンショットを探してスクロールします)、新しいものを取得するために変更を加えます。

最初にあなたが実際に見ているエラーメッセージを確認してください。

あなたがここにあるファイルを見ているなら...

%SystemDrive%\ inetpub\custerr \\ 500.htm

...これは一般に次のようになります。

IIS Default 500 error

...そして、あなたは** IIS**で現在設定されているエラーページを見ていることを知っています、そしてあなたはcustomErrors設定、aspエラーを変更する必要はありません。詳細設定、または "show friendly http errors"ブラウザ設定。

万が一誰かがそれを変更した場合に備えて、私のスクリーンショットを信頼するのではなく、上記の参照されたパスを見たいと思うかもしれません。

「はい、上記のエラーが表示されます。」

この場合、< httpErrors >またはIIS Managerの設定が表示されています エラーページ - >機能設定の編集。このデフォルトは、サーバーノードレベル(サイトレベルではなく)のerrorMode = DetailedLocalOnlyです。これは、この構成済みエラーページが表示されることを意味します。リモートの間は、サーバーにローカルにログオンして完全なエラーを見ることができるはずです。

Detailed HTTP Error

現在のエラーを修正するには、その時点で必要なものがすべて揃っているはずです。

「しかし、サーバーをブラウズしても詳細なエラーは表示されません」

それは2つの可能性を残します。

  1. サーバー上で使用しているブラウザは、接続設定でプロキシを使用するように設定されているため、「ローカル」として認識されません。
  2. あなたは実際にはあなたがブラウズしていると思うサイトをブラウズしているのではありません - これは一般的に関係するロードバランサがあるときに起こります。 pingチェックを実行して、dnsがサーバー上または他の場所のIPアドレスを提供しているかどうかを確認します。
  3. あなたはサイトの httpErrors 設定は "カスタム"にのみ設定されています。 "DetailedLocalOnly"に変更してください。ただし、設定エラーがあると、サイトレベルのhttpErrorsも設定項目になるため、これは機能しない可能性があります。その場合は#4に進んでください
  4. すべてのサイトの httpErrors のデフォルトは "Custom"に設定されています。この場合、IIS Manager(および特定のサイトではありません)の最上位サーバーノードをクリックし、 httpErrors 設定をDetailedLocalOnlyに変更する必要があります。これが内部サーバーであり、機密情報を漏らすことを心配していない場合は、サーバー以外のクライアントからのエラーを確認できるように、「詳細」に設定することもできます。

「サーバーにログオンすることは私にとって選択肢ではありません」

あなたのサイトの httpErrors を "Detailed"に変更すると、あなたはそれをリモートで見ることができます。それでもうまくいかない場合は、エラーがすでに設定エラーである可能性があります。上記の#3を参照してください。ですから、あなたは#4で行き詰まっているかもしれず、あなたはあなたのサーバーチームからの誰かを必要とすることになるでしょう。

「上記のエラーページは表示されません。何か違うものが表示されます。」

これを見れば….

enter image description here

...そしてあなたはこのような何かを見ることを期待しています...

enter image description here

...その後、IISマネージャの[サイト] - > IIS - > ASP - で、[ブラウザにエラーを送信]をtrueに変更する必要があります。 >デバッグプロパティ

これを見れば….

ie friendly errors 1

またはこれ...

ie friendly errors 2

...あなたはあなたのブラウザのわかりやすいエラーを無効にするか、あなたのブラウザがあなたに見せるために選んだものに対して実際の応答を見るためにfiddlerのwebviewを使う必要があります。

これを見れば….

Custom errors enabled

...それからカスタムエラーは機能していますが、カスタムエラーページはありません(もちろん、現時点では.netについて話していて、古典的なaspについては話していませんでした)。 web.configのcustomErrorsタグをRemoteOnlyに変更してサーバーで表示するか、Offを変更してリモートで表示する必要があります。

あなたがあなたのサイトのようなスタイルの何かを見ているなら、カスタムエラーはおそらくOnまたはRemoteOnlyであり、それはカスタムページを表示しています(例えばMVCのViews-> Shared-> Error.cshtml)。とは言っても、誰かがIIS内のページをhttpErrorsに変更した可能性は低いですが、最初のセクションを参照してください。

12
b_levitt

"existingResponse" httpErrors属性の値を "PassThrough"に設定してみてください。地雷が「置換」に設定されていたため、YSODが表示されませんでした。

<httpErrors errorMode="Detailed" existingResponse="PassThrough">
9
Dana Benson

誰も言及していないことの1つは、非常に迅速で一時的な修正方法です。このWebサーバーのローカルホストでエラーを確認できます。

6
RandomUs1r

メインのWebサイトフォルダ(c:\inetpub\wwwroot)を別のフォルダに変更した場合は、新しいフォルダのIIS_IUSRSグループに読み取り権限を付与する必要があることも確認できます。

3

EVERYTHINGを試してみただけでエラーの詳細を表示できないFotの人々は、私のように、設定のさまざまなレベルをチェックすることをお勧めします。 Webサイトレベルとアプリケーションレベル(Webサイト内)で両方の設定ファイルをチェックします。また、結局のところ、IISの最上位ノードで[詳細エラー]を無効にしました(スタートページのすぐ下にあり、Webサーバーのコンピューター名と同じ名前です)。エラーページを確認してください。

2
Jon Koeter

それを見つけた。

http://blogs.iis.net/ksingla/archive/2009/02/16/iis-7-5-updates-to-custom-errors-and-compression.aspx

管理者としてcmdを実行し、system32\inetsrvフォルダに移動して以下を実行します。

appcmd.exe set config -section:system.webServer/httpErrors -allowAbsolutePathsWhenDelegated:true

今、私は詳細なASPエラーを見ることができます。

1
egidiocs

サーバーでブラウザを実行してローカルIPでプロジェクトのURLをテストすると、一般的なエラーページ(500エラーページなど)なしでそのプロジェクトのすべてのエラーが表示されます。

1
Ali Rasouli