回答:
「Send Errors To Browser」が機能しない場合は、次のように設定します。
エラーページ-> 500->機能設定の編集->「詳細なエラー」
また、返されるエラーページのコンテンツが非常に短く、IEを使用している場合、IEはサーバーから返される有用なコンテンツを無視して、代わりに独自の一般的なエラーページを表示します。IEのオプションでこれをオフにするか、別のブラウザを使用できます。
Turn Windows features on or off > Internet Information Services > World Wide Web Services > Common HTTP Features > [✓] HTTP Errors
。
HOW-TO
for NETエラーページ?
リモートサーバーを使用している場合は、web.configファイルを次のように構成できます。
<configuration>
<system.webServer>
<httpErrors errorMode="Detailed" />
<asp scriptErrorSentToBrowser="true"/>
</system.webServer>
<system.web>
<customErrors mode="Off"/>
<compilation debug="true"/>
</system.web>
<system.webserver>
私の場合は設定で十分です。
system.webServer
セクションは、従来のASP実行している場合でも、IIS 7+によって読み取られる
customErrors
(例えばためにIIS 7+、ASP.NET、クラシックアプリケーションプール) tedgustaf.com/blog/2011/5/...
でweb.configファイルの下で
<system.webServer>
行を置き換える(または追加する)
<httpErrors errorMode="Detailed"></httpErrors>
と
<httpErrors existingResponse="PassThrough" errorMode="Detailed"></httpErrors>
これは、デフォルトでIIS7が、アプリケーションによって生成された4xxや5xxなどのHTTPステータスコードをパイプラインの上位でインターセプトするためです。
次に、「ASP」セクションで「ブラウザにエラーを送信」を有効にし、「エラーページ/機能設定の編集」で「詳細なエラー」を選択します。
また、IIS_IUSRSビルトイングループにWebサイトフォルダーの書き込み権限を付与します。
Set-WebConfigurationProperty '/system.WebServer/httpErrors' -Name errorMode -Value Detailed
TLDR:まず、パイプラインのどこからエラーが発生しているのかを特定し(スクロールしてエラーに似たもののスクリーンショットを探します)、変更を加えて新しいものを取得し、繰り返します。
ここにあるファイルが表示されている場合...
%SystemDrive%\ inetpub \ custerr \\ 500.htm
...通常は次のようになります。
...次に、現在設定されているエラーページが** IIS **に表示されていることを確認し、ASP.netのcustomErrors設定、aspエラーの詳細設定、または「友好的なhttpエラーを表示する」ブラウザ設定を変更する必要はありません。
誰かが変更した場合に備えて、スクリーンショットを信頼するのではなく、上記のパスを確認することをお勧めします。
この場合、< httpErrors >の設定が表示されるか、IISマネージャーでエラーページ -> [機能設定の編集]が表示されます。これのデフォルトは、(サイトレベルではなく)サーバーノードレベルでerrorMode = DetailedLocalOnlyです。これは、リモートでこの構成済みエラーページが表示されている間、サーバーにローカルでログオンして完全な状態で表示できることを意味します。エラーは次のようになります。
現在のエラーを修正するために、その時点で必要なものがすべて揃っているはずです。
それはいくつかの可能性を残します。
リモートで確認できるように、サイトのhttpErrorsを「詳細」に変更します。しかし、それが機能しない場合、エラーはすでに構成エラーである可能性があります。上記の3を参照してください。そのため、#4または#5でスタックしている可能性があり、サーバーチームの誰かが必要になります。
...そしてあなたはこのようなものを見ることを期待しています...
...次に、IISマネージャの[サイト]-> [IIS]-> [ASP]-> [デバッグプロパティ]で、[ブラウザにエラーを送信]をtrueに変更する必要があります。
またはこれ...
...ブラウザのフレンドリーエラーを無効にするか、fiddlerのWebビューを使用して、実際の応答とブラウザが表示するように選択した内容を確認する必要があります。
これを見たら...
...カスタムエラーは機能していますが、カスタムエラーページはありません(もちろん、現時点では.netについて話していて、クラシックASPではありません)。サーバーで表示するには、web.configのcustomErrorsタグをRemoteOnlyに変更するか、リモートで表示するにはOffに変更する必要があります。
サイトのようなスタイルの何かが表示される場合、カスタムエラーはおそらくOnまたはRemoteOnlyであり、カスタムページを表示しています(たとえば、MVCのViews-> Shared-> Error.cshtml)。そうは言っても、誰かがIISのページをhttpErrorsに変更した可能性は低いですが、その最初のセクションを参照してください。
「existingResponse」httpErrors属性の値を「PassThrough」に設定してみてください。地雷が「交換」に設定されていたため、YSODが表示されませんでした。
<httpErrors errorMode="Detailed" existingResponse="PassThrough">
誰も言及していないことの1つは、非常に迅速で一時的な修正です。そのWebサーバーのローカルホストでエラーを表示できます。
それを見つけた。
管理者としてcmdを実行し、system32 \ inetsrvフォルダーに移動して実行します。
appcmd.exe set config -section:system.webServer/httpErrors -allowAbsolutePathsWhenDelegated:true
これで、詳細なASPエラーを確認できます。