4

私は常に、Ajax をキャッチするために次の 2 つのコード (以前は機能していました) を使用してきましたasyncPostBackError

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

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

しかし、未処理の例外がこのイベント ハンドラー関数でキャッチされ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イベント ハンドラー メソッドを関連付けていない場合に発生するエラーと同じです。

何をしても同じエラーが発生します。これは何が原因でしょうか?

4

2 に答える 2

3

これは暗闇の中のショットかもしれませんが、ScriptManager1_AsyncPostBackError関数が呼び出された後にグローバル例外処理が行われている可能性があります。その例外処理がserver.transferエラー ページに対して実行されている場合、返された HTML はスクリプト マネージャーによって解析できません。

これは私のサイトの 1 つで発生しており、関数に Server.ClearError() を追加することで解決されましたScriptManager1_AsyncPostBackError。これによりGlobal.Application_Error、関数が呼び出されなくなりました。

于 2012-06-28T22:16:07.520 に答える
0

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, "");
于 2009-11-16T10:51:55.337 に答える