2012-04-03 75 views
2

我在Global.asax文件下面的代碼:的Application_Error不觸發在服務器

protected void Application_Error() 
{ 
    var exception = Server.GetLastError(); 
    Response.Clear(); 
    Server.ClearError(); 

    //processing 

    Response.RedirectPermanent("url processed")); 
} 

在本地主機能正常工作,做這樣的事情:

我訪問「WWW。 somesite.com/uk/en-GB「,並且由於此路由未註冊,Application_Error會」捕獲「錯誤,對其進行處理並重定向至正確的路由」www.somesite.com/en-GB「。 (如Global.asax上面的代碼所示)

但是在服務器端,我嘗試訪問「www.somesite.com/uk/en-GB」,而不是進入Application_Error,而是那表明我這個錯誤:

http://codinghorror.typepad.com/.a/6a0120a85dcdae970b0120a86d7d7d970b-pi

有誰知道如何解決這個問題?

+0

啓動fiddler,檢查你和服務器之間的流量,我猜它會到達Application_Error並重定向到一個由於某種原因無效的URL。看看小提琴手給你什麼。 – 2013-07-30 19:43:09

回答

0

您沒有收到錯誤消息。你有一個404響應代碼。你需要以不同的方式處理這種情況。 Application_Error僅捕獲未捕獲的異常。

+0

完全不正確的語句,404錯誤也會觸發Application_Error。 – 2012-04-03 20:15:05

+0

@EdDeGagne那麼結論是什麼? – expertCode 2012-04-04 10:13:09

+0

我想我的第一個問題是:Response.RedirectPermanent(「url processed」) 什麼是「url processed」?我相信字符串值應該是一個有效的網址。 – 2012-04-04 12:15:39

0

我運行IIS 6,我發現,這個問題很容易固定下的System.Web加入這我的web.config文件:

<customErrors mode="Off"> 
    </customErrors> 

這將允許的Application_Error要執行的代碼。