非同期ポストバックを多用するASP.NET AJAXでの安全策

ASP.NET AJAXを多用したページで非同期ポストバックを送り続けているような場合にポストバック要求->レスポンス待機中にブラウザの×ボタンで画面を閉じられてしまうと、要求がサーバー側に残ってしまう場合がある。
その状態で同プロセスの別ブラウザ(例: 親画面等)から要求をサーバへ送ると、要求が全く受け付けられなくなってしまう場合があった。 ※その時、画面は真っ白になる

そのようにしたくない場合、下記のような対応策が考えられる 。

対応案1. ページのアンロード時に必ず非同期ポストバックをキャンセルするように実装する

<script type="text/javascript"> 
    function pageUnload()
    {
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.abortPostBack();
    }
</script>

参照記事:

非同期ポストバックのキャンセル – MSDNオンライン
http://msdn.microsoft.com/ja-jp/library/bb398789.aspx

対応案2. 最初から中断可能なタスクとしてロジックを設計する

参照記事:

Cutting Edge: ASP.NET AJAX を使用してサーバー タスクをキャンセルする – MSDN マガジン
http://msdn.microsoft.com/ja-jp/magazine/cc163380.aspx

 

広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中