2012-02-09 244 views
0

我們有一個全局異常類,它捕獲Web應用程序中的所有異常。一般的迴應是將用戶重定向到錯誤頁面。調用response.redirect時出現異常

現在,當從「更新」面板引發異常時,response.redirect將引發異常,並說明服務器在發送HTTP標頭後無法清除標頭。與該堆棧跟蹤:

處 System.Web.HttpApplication.SyncEventExecutionStep System.Web.HttpResponse.ClearHeaders()在System.Web.Handlers.ScriptModule.EndRequestHandler(對象發件人, EventArgs的) .System.Web.HttpApplication.IExecutionStep.Execute() 在System.Web.HttpApplication.ExecuteStep(IExecutionStep一步,布爾& completedSynchronously)

我已經試過了, 1. JS腳本 2.清除標題和內容

回答

0

我相信你可以利用頁面請求管理器來處理異步回發錯誤。

http://msdn.microsoft.com/en-us/library/bb383810.aspx

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 

function EndRequestHandler(sender, args) 
{ 
    if (args.get_error() != undefined) 
    { 
     var errorMessage = args.get_error().message; 
     args.set_errorHandled(true); 
     ToggleAlertDiv('visible'); 
     $get(messageElem).innerHTML = errorMessage; 
    } 
} 
0

如何,全球的例外類執行?從global.app_error內?

此外,您可能已添加true作爲Response.Redirect的第二個參數 - 它會在執行app_error之前快速結束響應。這意味着服務器完成向客戶端發送字節:它已經計算了響應長度,將該值包含在響應頭中,並且響應頭已經發送給客戶端。你無法撤消(通過清除它們,或者無論如何)。

如果是這種情況(true arg),請嘗試將其設置爲false(或不提供第二個參數),然後查看會發生什麼情況。

相關問題