Global.asax Application_Error не запускается на IIS - PullRequest
0 голосов
/ 23 августа 2011

У меня есть страница ASP.NET MVC 2. Во время ошибки или исключения метод Application_Error в Global.asax не запускается на IIS7.

** Но он срабатывает, если я запускаю веб-приложение с VS2010 (localhost: someport)

Мой код (C #):

protected void Application_Error(object sender, EventArgs e)
{
  Exception exception = Server.GetLastError();
  string requestedUrl = HttpContext.Current.Request.Url.ToString();

  Response.Clear();
  // do something
  Server.ClearError();
  Server.Redirect("Error");
}

Моя конфигурация:

<customErrors mode="On" defaultRedirect="~/Error">
</customErrors>

<system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>

Пожалуйста, помогите.

Ответы [ 2 ]

4 голосов
/ 23 августа 2011

Это потому, что ваши настройки веб-конфигурации переопределяют поведение по умолчанию. Вам нужно будет отключить это (customErrors = "Off" и удалить defaultRedirect (или установить условные правильные коды состояния, которые позволяют сбрасывать ошибки в событии Application_Error). Если вы отключите это, вы можете обработать ошибку в Application_Error Затем событие перенаправляет пользователя или отображает сообщение об этом событии. Этот параметр веб-конфигурации обрабатывает ошибки, и только необработанные ошибки будут всплывать до этого события.

1 голос
/ 01 сентября 2011

Еще одна вещь.
Application_Error не запускается для исключения, которое вызывается в классе / методе, помеченном атрибутом HandleError в IIS.
Оно срабатывает, если вы запускаете приложение на сервере разработки asp.net, но не не работает для реального IIS. (Я попал в эту ловушку).

...