ASP.NET HTTP ハンドラにSessionの使用

2009/10/23 11:39Update
TAGS: HttpContext.Current.Session | Session | IHttpHandler

HTTP ハンドラにSessionの使用について。

IHttpHandlerを継承したHTTPハンドラで、HttpContext.Current.Sessionでセッションを取得しようとしたところで、nullが返されました。
早速調べたところ、HTTP ハンドラでのセッションアクセスには、IRequiresSessionState インタフェースを継承し、セッションのアクセス権を宣言する必要があると分かりました。

インタフェース名:IRequiresSessionState
名前空間: System.Web.SessionState
アセンブリ: System.Web (system.web.dll 内)

IRequiresSessionStateはメソッドのないインタフェースなので、利用するには、単なるIRequiresSessionStateを継承するだけですみます。

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Web.SessionState;

namespace Handler
{
    public class AppHandler : IHttpHandler, IRequiresSessionState
    {
        public void ProcessRequest(HttpContext context)
        {
            System.Web.SessionState.HttpSessionState session = HttpContext.Current.Session; //セッションの取得
            //他の操作…
        }

        /**
         * HTTPハンドラ・クラスのインスタンスをほかのリクエストで再利用できるかどうかを示す値を返す。
         **/
        public bool IsReusable
        {
            get { return true; }
        }
    }
}

.

有关作者
Syboos.jp編集長システム設計や開発、保守運営などを行ってます。オープンソース技術に興味があります。

Sponsored Link


Comments