Обработка ошибок в global.asax MVC 3.0 проблема на сервере 2008 - PullRequest
1 голос
/ 12 августа 2011

Я создал

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)

Пользовательские детали события:

Ответы [ 3 ]

1 голос
/ 16 августа 2011

Я решаю проблему с добавлением

<system.web>
  <customErrors mode="Off" />
</system.web>
0 голосов
/ 16 августа 2011

Прямо здесь, он говорит вам номер строки, где проблема:

Ответ не доступен в этом контексте.в System.Web.HttpContext.get_Response () в LogiranjeGresaka.MvcApplication.Application_Start () в c: \ users \ esmira \ documents \ visual studio 2010 \ Проекты \ LogiranjeGresaka \ LogiranjeGresaka \ Global.asax.cs: строка 46

Линия 46 Global.asax

0 голосов
/ 15 августа 2011

Это вызывается, но ошибка генерируется приведенным выше кодом, как указано в сообщении об ошибке:

Информация об исключении: Тип исключения: HttpException Сообщение об исключении: Ответ недоступно в этом контексте

Вы пытаетесь использовать Response, но не можете.

...