ASP.NET HTTP ハンドラにSessionの使用
2009/10/23 11:39Update
HTTP ハンドラにSessionの使用について。
IHttpHandlerを継承したHTTPハンドラで、HttpContext.Current.Sessionでセッションを取得しようとしたところで、nullが返されました。
早速調べたところ、HTTP ハンドラでのセッションアクセスには、IRequiresSessionState インタフェースを継承し、セッションのアクセス権を宣言する必要があると分かりました。
インタフェース名:IRequiresSessionState
名前空間: System.Web.SessionState
アセンブリ: System.Web (system.web.dll 内)
IRequiresSessionStateはメソッドのないインタフェースなので、利用するには、単なるIRequiresSessionStateを継承するだけですみます。
.
早速調べたところ、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; }
}
}
}
.
Sponsored Link
- Relative Articles
- ASP.NETプログラミング Tips - (2009/10/16 14:32)
- ASP.NET Webアプリのセッション・タイムアウト設定例 - (2011/12/27 15:14)