ashxページでSession値を取得する方法


通常のトランザクションページでは、次のように簡単にRequest、Responseオブジェクトを取得できます.
HttpRequest Request = context.Request;
HttpResponse Response = context.Response;
しかし、Sessionの値を得るのはそんなに簡単ではありません.たとえば、ashxでSessionに保存されているログインアカウントSession["userAccount"]を取得します.
もしあなたがcontextだけなら.Session[userAccount]の場合は、「オブジェクト参照をオブジェクトに設定していないインスタンス」という例外が報告されます
したがって,セッションの値をとるには,以下のようにする必要がある.
1、ネーミングスペースの導入:
using System.Web.SessionState;
2、IRequiresSessionStateインタフェースを実現する.具体的には以下の通りである.
    /// <summary>
    /// $codebehindclassname$      
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class AddUserInfo : IHttpHandler,IRequiresSessionState //           ,        
    {

        public void ProcessRequest(HttpContext context)
        {

      //...

       //            

                if(context.Session["userAccount"] != null)

      {

        string account = context.Session["userAccount"].ToString();

      }

      //...       

    }

  }