1

log4net でエラーをログに記録するように MVC アプリケーションをセットアップしました。私の global.asax では、Application_Error メソッドを使用してアプリケーション エラーをキャッチします (s_log は、Log4net のラッパーであるログ マネージャーです)。

protected void Application_Error(Object sender, EventArgs e)
{
    Exception ex = Server.GetLastError().GetBaseException();
    s_log.LogException(true, ex, "Application Error");
}

customErrors が「オフ」に設定されている場合、黄色の死の画面が表示され、ログ ファイルにエラーが表示されます。customErrors が「オン」に設定されている場合、エラー ページ (および詳細なエラー) が表示されますが、ログ ファイルには何も書き込まれません (デバッグは Application_Error にヒットしません)。

誰かがなぜこれが起こるのか教えてもらえますか?

エラー.aspx

<h1>Sorry, an error occurred while processing your request.</h1>
<strong>Controller: </strong> <%= Model.ControllerName %><br />
<strong>Action: </strong> <%= Model.ActionName %>
<% if (Model.Exception != null) { %>
<p>
    <strong>Exception Details:</strong><br />
    <%= Model.Exception.ToString() %>
</p>
<% } %>

web.config の customErrors セクション

<customErrors mode="On" defaultRedirect="~/error">
    <error statusCode="403" redirect="~/error"/>
    <error statusCode="404" redirect="~/error"/>
</customErrors>
4

1 に答える 1

1

customerrors 関数は、Application_Error メソッドが処理する前にそれを処理しています。customErrors をオフにして、mvc の応答リダイレクトを使用してユーザーを適切なエラー ページに送信する必要があります。

ASP.NET MVC カスタム エラー処理 Application_Error Global.asax?を参照してください。

于 2010-11-27T08:18:42.043 に答える