Как регистрировать ошибки приложения, если для customErros установлено значение On? - PullRequest
1 голос
/ 27 ноября 2010

Я настроил приложение 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 установлено значение «Off», я получаю желтый экрансмерть и можете увидеть ошибку в моем файле журнала.Когда для customErrors установлено значение «Вкл.», Я вижу свою страницу ошибок (и подробную ошибку), но в файле журнала ничего не записывается (отладка не затрагивает ошибку Application_Error).

Может кто-нибудь объяснить мне, почему этопроисходит?

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>
<% } %>

customErrors раздел в web.config

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

1 Ответ

1 голос
/ 27 ноября 2010

Функция customerrors просто позаботится об этом, прежде чем метод Application_Error сможет это сделать. Вы должны просто отключить customErrors и использовать перенаправление ответов mvc, чтобы отправить пользователя на соответствующую страницу ошибки.

См. Обработка пользовательских ошибок ASP.NET MVC Application_Error Global.asax?

...