2011-05-10 21 views
6

我在web.config文件啓用自錯誤作爲代碼200返回並將內容設置爲錯誤頁面。錯誤的UpdatePanel處理與通過<customErrors模式=「開」 />

這打破時的UpdatePanel試圖解析響應,並拋出一個JavaScript異常:

Sys.WebForms.PageRequestManagerParserErrorException:從服務器接收 消息無法解析。

有沒有辦法在客戶端正確處理此問題,而不必禁用自定義錯誤,因爲我不想泄漏任何異常詳細信息?處理這種

回答

4

一種方法是要連接的OnAsyncPostBackError事件對你ScriptManager控制:

<asp:ScriptManager ID="ScriptManager1" runat="server" 
    AllowCustomErrorsRedirect="False" 
    OnAsyncPostBackError="ScriptManager1_AsyncPostBackError" /> 

page on MSDN有使用這種方法來處理異步回發錯誤的一個完整的例子。

編輯
爲了避開與自定義錯誤頁的問題,一定要在ScriptManagerAllowCustomErrorsRedirect屬性設置爲false。一旦我將這個屬性設置爲false,即使我在web.config中設置了CustomErrors mode =「On」,我仍然可以使MSDN示例正常工作。

+0

如果我已經做了類似的事情,但是這種方法是基於'if(... args.get_error()。httpStatusCode =='500')',這在啓用自定義錯誤時不起作用,因爲它總是會返回一個代碼200.我是否缺少別的東西? – 2011-05-10 04:06:00

+0

@Xavier,好吧,我想我現在明白了。請讓我知道這是否適合你。 – rsbarro 2011-05-10 05:34:10

+0

此外,有一點需要注意的是,它會返回200響應(使用Fiddler進行檢查),但在響應文本中(至少對於MSDN示例),您會看到「46 | error | 500 | Value會影響不在預期範圍內。|「,表示500錯誤。 – rsbarro 2011-05-10 05:42:05

相關問題