PageRequestManagerParserErrorException を catch する方法

Ajax / UpdatePanel のタイムアウトの挙動を調べてみた

"Sys.WebForms.PageRequestManagerParserErrorException:
The message received from the server could not be parsed.
Common causes for this error are when the response is
modified by calls to Response.Write(), response filters,
HttpModules, or server trace is enabled.
Details: Error parsing near '

前回の応用です
セッションタイムアウトで上記のようなエラーが出た場合
AsyncPostBackで処理しろって書いてるサイトもあるんですが、チケットの期限が切れてる場合そもそも onAsyncPostBack が発生しなかったりします。

Sys.Application.add_init(AppInit);
function AppInit(sender){
  var prm = Sys.WebForms.PageRequestManager.getInstance();
  if (!prm.get_isInAsyncPostBack()) {
    prm.add_endRequest(onEndRequest);
  }
}

そこで、onEndRequest を使います。

function onEndRequest(sender, args) {
  if (args.get_error() != undefined) {
    var error = args.get_error();
    if (error.name ==
      "Sys.WebForms.PageRequestManagerParserErrorException") {
         args.set_errorHandled(true);
         window.alert("TimeOutでリロードします");
         window.open("/Default.aspx", "_self");
         return;
    }
    var errorMessage = args.get_error().message;
    window.alert(error.message);
  }
}

こんな感じでSys.WebForms.PageRequestManagerParserErrorException だった時
リダイレクトで認証ページに飛ばせば解決なのです

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です