2011-08-12 42 views
1

我創建錯誤在Global.asax的MVC 3.0問題處理上2008服務器

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秒 事件ID: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.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext的上下文中,一個HttpApplication應用) 在System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr的appContext,HttpContext的上下文中,MethodInfo的[]處理程序) 在System.Web.HttpApplication.InitSpecial(HttpApplicationState狀態, MethodInfo的[]處理程序,IntPtr的appContext,HttpContext的上下文) 在System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr的appContext,HttpContext的上下文) 在System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr的appContext)

響應不可用在這方面。 在System.Web.HttpContext.get_Response() 在LogiranjeGresaka.MvcApplication.Application_Start()在C:\用戶\ esmira \文件\視覺工作室2010 \項目\ 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 。RegisterEventSubscriptionsWithIIS(IntPtr的appContext,HttpContext的上下文中,MethodInfo的[]處理程序) 在System.Web.HttpApplication.InitSpecial(HttpApplicationState狀態,MethodInfo的[]處理程序,IntPtr的appContext,HttpContext的上下文) 在System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr的appContext, HttpContext的上下文) 在System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr的appContext)

自定義事件詳細:

回答

1

我解決問題,增加

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

是的,它的工作原理,謝謝 – Hukam

0

該被調用,但該錯誤是由代碼拋出上述如由錯誤的詳細消息:

異常信息:異常類型:HttpException 異常消息:沒有獲得響應在這種情況下

您要使用的反應,但你不能。

0

就在這裏,它是告訴你的行號的問題是:

沒有獲得響應在這種情況下。 LogiranjeGresaka.MvcApplication.Application_Start()中的System.Web.HttpContext.get_Response()在c:\ users \ esmira \ documents \ visual studio 2010 \ Projects \ LogiranjeGresaka \ LogiranjeGresaka \ Global.asax.cs中:line 46

Line 46 Global.asax