[ ASP.NET ] クライアントの接続状況を確認 ( HttpResponse.IsClientConnected )

Pocket

ASP.NET ではクライアント(ブラウザ)がまだ接続されているかを、HttpResponse.IsClientConnected プロパティを使って知ることができます。既に別ページに遷移したり、ブラウザを閉じている相手に対して、負荷の高い処理をすることを避けることができます。

スポンサーリンク

クライアントの接続状況を確認するサンプルコード

負荷の大きいサーバ処理の実行の前に HttpResponse.IsClientConnected プロパティを使ってクライアントがまだ接続されているかを確認することで、余計な処理の実行を回避してサーバの負荷を軽減させることができます。

ただし、IIS 5.0 では接続確認処理自体が負荷を与えることがあるようなので、事前によく検証する必要があります。

VB.NET

    ' ブラウザがまだ接続されているか確認する
    If (Response.IsClientConnected) Then

        ' ------------------------------------
        ' この位置で何か時間がかかったり
        ' 負荷のかかる処理を行う
        '-------------------------------------

    Else
        ' すでに読み込み中止などにより、ブラウザとの接続は途絶えているので
        ' レスポンスを中止する
        Response.End()
    End If

C#

    // ブラウザがまだ接続されているか確認する
    if (Response.IsClientConnected)
    {

        // ------------------------------------
        // この位置で何か時間がかかったり
        // 負荷のかかる処理を行う
        //-------------------------------------

    }
    else
    {
        // すでに読み込み中止などにより、ブラウザとの接続は途絶えているので
        // レスポンスを中止する
        Response.End();
    }

動作確認は行っていませんが、時間のかかる処理の途中でチェックポイントを設けて ブラウザの接続確認を行うことで、不要な処理を停止させることができるかもしれません。

業務アプリケーションの場合は、利用者側も時間がかかる処理であることを認識している場合が多いと思われるので、効果は少ないかもしれません

参考
スポンサーリンク


Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>