我已经设置了一个 MVC 应用程序来使用 log4net 记录错误。在我的 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 设置为“On”时,我会看到我的错误页面(以及详细的错误),但日志文件中没有写入任何内容(调试不会遇到 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>