首页 文章

服务器2008上的global.asax MVC 3.0问题中的错误处理

提问于
浏览
1

我 Build

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

进程信息:进程ID:6644进程名称:w3wp.exe帐户名:IIS APPPOOL \ TestnaAplikacijaZaLog

异常信息:异常类型:HttpException异常消息:响应在此上下文中不可用 . 在System.Web.HttpApplication.InitSpecial(HttpApplicationState状态,MethodInfo [])的System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext context,MethodInfo []处理程序)的System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context,HttpApplication app)处 . System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)的System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext context)处理程序,IntPtr appContext,HttpContext context)

在这种情况下无法获得响应 . 在System.Web.HttpContext.get_Response()at LogiranjeGresaka.MvcApplication.Application_Start()in c:\ users \ esmira \ documents \ visual studio 2010 \ Projects \ LogiranjeGresaka \ LogiranjeGresaka \ Global.asax.cs:第46行

请求信息:请求URL:http://192.168.0.100:2227/Home/Index请求路径:/ Home / Index用户主机地址:192.168.0.103用户:
经过身份验证:错误身份验证类型:
线程帐户名称:IIS APPPOOL \ TestnaAplikacijaZaLog

线程信息:线程ID:7线程帐户名称:IIS APPPOOL \ TestnaAplikacijaZaLog模拟:False堆栈跟踪:System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext)上的System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext上下文,HttpApplication应用程序) System.Web上的System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext context)中的System.Web.HttpApplication.InitSpecial(HttpApplicationState状态,MethodInfo []处理程序,IntPtr appContext,HttpContext上下文)中的context,MethodInfo []处理程序 . Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)

自订活动详情:

3 回答

  • 1

    我解决了添加问题

    <system.web>
      <customErrors mode="Off" />
    </system.web>
    
  • 0

    这是被调用的,但错误是由上面的代码引发的,如错误消息所详述:

    异常信息:异常类型:HttpException异常消息:响应在此上下文中不可用

    您正在尝试使用Response,但您不能 .

  • 0

    就在这里,它告诉你问题所在的行号:

    在这种情况下无法获得响应 . 在System.Web.HttpContext.get_Response()at LogiranjeGresaka.MvcApplication.Application_Start()in c:\ users \ esmira \ documents \ visual studio 2010 \ Projects \ LogiranjeGresaka \ LogiranjeGresaka \ Global.asax.cs: line 46

    第46行Global.asax

相关问题