2011-03-28 33 views
0

我的Global.asax文件中有一個Application_Error處理程序。但是,我使用XHR請求加載了很多頁面,而寧願這些「子頁面」返回javascript或真正的500代碼來處理我的主應用程序,而不是錯誤頁面。Asp.net在不同的頁面上處理錯誤

是否有可能以不同的方式處理某些頁面上的錯誤?母版頁可以在擴展它的頁面中處理自己的錯誤,而不會冒泡到Global.asax?

謝謝!

+0

我建議在application_error子例程中編寫自己的自定義代碼,請查看http://stackoverflow.com/questions/4509827/asp-net-customerror-handling-in-masterpage-error-page – Mitul 2011-03-28 16:49:14

回答

1

處理在我的網頁的Page_Error事件事件似乎正是我想要的:

protected void Page_Error(object sender, EventArgs e) { 
    var ex = Server.GetLastError().GetBaseException(); 

    Response.StatusCode = 500; 
    Response.Redirect("~/SubError.aspx", true); 
    } 

在我SubError.aspx頁我有我的應用程序特定的JavaScript。

1

在Global.asax中的Application_Error處理器將適用於Web應用程序的所有未處理的錯誤(你可以和應該做的特定錯誤的頁面裏面的方法處理),但你可以把邏輯在你身邊是否不叫Server.ClearError在您的Application_Error處理程序中。

http://support.microsoft.com/kb/306355

如果你不調用Server.ClearError 或者捕獲Page_Error或 Application_Error事件中的錯誤,該錯誤 基於在<的customErrors >設置 辦理了部分 Web.config文件。

1

您的Global.asax處理錯誤的原因是因爲這是您應用程序中任何隱匿異常的回退事件處理程序。確保處理您的錯誤(嘗試{} catch {})您將執行異步請求的位置。

我認爲你應該能夠改變響應代碼,所以如果你確實發現了異常,你的代碼會返回一個500響應。

通常,我喜歡返回錯誤消息並將其顯示爲javascript警報,如果功能將因失敗的請求而中斷。

我不確定主頁面是否可以處理其封裝的頁面錯誤?任何你不把異步終點放在.asmx文件中的原因?

1

另一個爭論點是你註冊的任何HttpModules也可以做錯誤處理。