簡體   English   中英

ScriptManager1.AsyncPostBackErrorMessage未顯示錯誤消息

[英]ScriptManager1.AsyncPostBackErrorMessage not showing error message

我總是使用以下兩位代碼(用於工作)來捕獲Ajax asyncPostBackError

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

protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e) 
{ 
ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Message; 
}

但是現在即使已經在此事件處理函數中捕獲到未處理的異常並且使用Exception消息設置了AsyncPostBackErrorMessage ,無論異常消息是什么,我總是在警告框中的頁面中獲得相同的錯誤報告, :

Error: Sys.WebForms.PageRequestManagerParserErrorException: The message recieved from the server could not be parsed. Common causes for this error are when the response is modified by calls to the Respnse.Write() ....

如果您有一個未處理的asyncPostBack異常並且沒有連接Scriptmanger's asyncPostBackError事件處理程序方法,則會出現同樣的錯誤。

無論我做什么,我都會得到同樣的錯誤。 會導致什么?

這可能是一個黑暗的鏡頭,但可能在調用ScriptManager1_AsyncPostBackError函數后進行全局異常處理。 如果該異常處理正在執行server.transfer到錯誤頁面,則腳本管理器將無法解析發回的HTML。

這發生在我的一個站點上,並通過將Script.ClearError()添加到ScriptManager1_AsyncPostBackError函數來解決。 這阻止了Global.Application_Error函數。

從VS 2005升級到VS 2008后,我似乎面臨着同樣的問題。我使用這段代碼:

if (e.Exception is LandingPageUIExceptionInvalidMSISDN)
{
    msgresolved = "ErrorPopUpInvalidNumber";
    ScriptManager.GetCurrent(Page).AsyncPostBackErrorMessage = msgresolved;
}

為了處理異常並顯示正確的錯誤消息。 AsyncPostBackErrorMessage已正確分配,但在客戶端,在JavaScript中執行以下操作時:

var ErrorPopUpDivID = e.get_error().message;
alert(ErrorPopUpDivID);

ErrorPopUpDivID不是我所謂的AsyncPostBackErrorMessage 它曾經也適合我。 我將試着弄清楚它是否可能是.NET 3.5的問題。

最后,以下3行JavaScript解決了我的問題:

var ErrorPopUpDivID = e.get_error().message;
var re = new RegExp("Sys.*: ", "g");
ErrorPopUpDivID = ErrorPopUpDivID.replace(re, "");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM