2010-11-27 1 views
1

У меня есть приложение MVC для регистрации ошибок с log4net. В моем global.asax я ломаю ошибки приложения с помощью метода Application_Error (s_log - мой менеджер журналов, который является оберткой вокруг Log4net).Как регистрировать ошибки приложения, когда customErros имеет значение On?

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

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

См. ASP.NET MVC Custom Error Handling Application_Error Global.asax?

Смежные вопросы