httpErrors の使用に関する多くの投稿を見てきましたが、私のプロジェクト、または少なくとも私の理解には、より深い問題があると思います。
最近、代わりに customErrors の使用から HttpErrors の使用に移行しました。カスタム エラーは正常に表示されますが、エラーの場合は IIS のブルー スクリーン (エラーに関する情報がありません) しか表示されません。
それ以来、カスタム エラー ページをリモートで取得し、YSOD をローカルで取得しようとしましたが、成功しませんでした。
「Response.TrySkipIisCustomErrors = true;」を追加しました。Global.asax.cs の Application_Error に変更しましたが、違いはないようです。また、プロジェクトは ASP .NET と MVC の両方を使用していますが、それが違いを生むかどうかはわかりません。
私は existingResponse と errorMode をいじっていましたが、これらは私が見てきた結果です: (私のフォーマットが意味をなさない場合はお知らせください)
[既存の応答 | エラーモード | リモート結果 | ローカル結果]
| | 置換 | 詳細なローカルのみ | エラーページを修正 | IIS のブルー スクリーン
| | 置換 | カスタム | エラーページを修正 | エラーページを修正
| | パススルー | 詳細なローカルのみ | YSOD | YSOD
| | 自動 | カスタム | YSOD | YSOD
| | 自動 | 詳細なローカルのみ | YSOD | YSOD
これが私のwebconfigです:
<httpErrors existingResponse="Auto" errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" subStatusCode="-1" prefixLanguageFilePath="" path="404.html" responseMode="File" />
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="500" subStatusCode="-1" prefixLanguageFilePath="" path="500.html" responseMode="File"/>
</httpErrors>
Global.asax.cs
protected void Application_Error(object sender, EventArgs e)
{
Response.TrySkipIisCustomErrors = true;
Exception ex = Server.GetLastError().GetBaseException();
LogProvider.Log(LogProvider.LogLevels.Error, "Global Error", ex);
}
助けてくれてありがとう。