Я создал
protected void Application_Error(object sender, EventArgs e)
{
if (Context.Handler is IRequiresSessionState || Context.Handler is IReadOnlySessionState)
{
try
{
var httpContext = HttpContext.Current;
Exception exception = httpContext.Server.GetLastError();
if (exception is HttpRequestValidationException)
{
httpContext.Response.Clear();
var logLoggerService = new LogLoggerService();
logLoggerService.Error("ValidationException", exception);
WriteErrorResponse(exception.Message);
}
else
{
httpContext.Response.Clear();
var logLoggerService = new LogLoggerService();
logLoggerService.Error(exception);
WriteErrorResponse(exception.Message);
}
}
catch
{
var httpContext = HttpContext.Current;
httpContext.Response.Clear();
}
}
}
Я обнаружил, что при возникновении ошибки на сервере эта функция не вызывается. Но когда я нахожусь в режиме отладки, вызывается Application_Error
.
Почему это не работает на сервере? Может быть, проблема с IIS или .NET 4.0 на сервере?
На сервере у меня есть:
Код события: 3005
Сообщение о событии: произошло необработанное исключение.
Время события: 15-8-2011 8:25:26
Время события (UTC): 15-8-2011 6:25:26
Код события: ae3cad590adc43c3803410023cccb6b0
Последовательность событий: 4
Возникновение события: 1
Код детали события: 0
Информация о приложении:
Домен приложения: / LM / W3SVC / 11 / ROOT-1-129578631124796958
Уровень доверия: Полный
Виртуальный путь к приложению: /
Путь приложения: C: \ inetpub \ wwwroot \ TestnaAplikacijaZaLog \
Название машины: SRJ1-SRV-01
Информация о процессе:
Идентификатор процесса: 6644
Имя процесса: w3wp.exe
Имя учетной записи: IIS APPPOOL \ TestnaAplikacijaZaLog
Информация об исключении:
Тип исключения: HttpException
Сообщение об исключении: Ответ не доступен в этом контексте.
в System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode (контекст HttpContext, приложение HttpApplication)
в System.Web.HttpApplication.RegisterEventSubscriptionWithIIS (IntPtr appContext, контекст HttpContext, обработчики MethodInfo [])
в System.Web.HttpApplication.InitSpecial (состояние HttpApplicationState, обработчики MethodInfo [], IntPtr appContext, контекст HttpContext)
в System.Web.HttpApplicationFactory.GetSpecialApplicationInstance (IntPtr appContext, HttpContext context)
в System.Web.Hosting.PipelineRuntime.InitializeApplication (IntPtr appContext)
Ответ недоступен в этом контексте.
в System.Web.HttpContext.get_Response ()
в LogiranjeGresaka.MvcApplication.Application_Start () в c: \ users \ esmira \ documents \ visual studio 2010 \ Projects \ LogiranjeGresaka \ LogiranjeGresaka \ Global.asax.cs: строка 46
Запрос информации:
URL запроса: http://192.168.0.100:2227/Home/Index
Путь запроса: / Главная / Индекс
Адрес хоста пользователя: 192.168.0.103
Пользователь:
Аутентифицировано: Ложь
Тип аутентификации:
Имя учетной записи потока: IIS APPPOOL \ TestnaAplikacijaZaLog
Информация о теме:
ID темы: 7
Имя учетной записи потока: IIS APPPOOL \ TestnaAplikacijaZaLog
Выдает себя за: Ложь
Трассировка стека: в System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode (контекст HttpContext, приложение HttpApplication)
в System.Web.HttpApplication.RegisterEventSubscriptionWithIIS (IntPtr appContext, контекст HttpContext, обработчики MethodInfo [])
в System.Web.HttpApplication.InitSpecial (состояние HttpApplicationState, обработчики MethodInfo [], IntPtr appContext, контекст HttpContext)
в System.Web.HttpApplicationFactory.GetSpecialApplicationInstance (IntPtr appContext, HttpContext context)
в System.Web.Hosting.PipelineRuntime.InitializeApplication (IntPtr appContext)
Пользовательские детали события: