2011-12-22 11 views
1
は、私が使用しています

HttpContextでセッションを正しく設定する方法は?

if (string.IsNullOrEmpty(myHttpContext.Request.QueryString["code"])) 
    { 

     if (myHttpContext.Session == null || myHttpContext.Session["code"] == null) 
     { 
      OutputError("Code", "Invalid code."); 
     } 
     else 
     { 
      code = myHttpContext.Session["code"].ToString(); 
     } 
    } 
    else 
    { 
     code = myHttpContext.Request.QueryString["code"]; 
     myHttpContext.Session.Add("code", code); 
    } 

をしかし、私はエラーを取得しておいてください。 オブジェクト参照オブジェクトのインスタンスに設定されていません。

対象: myHttpContext.Session.Add( "code"、code);

私がしたいのは、簡単なセッションを設定したいのですが、誰かがこれが私を狂わせるのを助けてください。

答えて

4

IHttpHandler(ashx)クラスを実装していますIRequireSessionState?そうしないと、Sessionオブジェクトにアクセスできなくなります。

public class MyHandler : IHttpHandler, IRequireSessionState 
{ 
    public bool IsReusable { get { return false; } } 

    public void ProcessRequest(HttpContext ctx) 
    { 
     // your code here 
    } 
} 
+0

年後、これは私はこの解決策を与えた最初の記事を見つけました。より多くのアップフォートが必要です。 :)私の場合、私が使ったインターフェースは 'System.Web.SessionState.IReadOnlySessionState'でした。 – Andrew

0

あなたの代わりに常に存在コンテキストを使用する場合がありますしかし、あなたはif (myHttpContext != null)

を忘れてしまった:HttpContext.Currentセッションのために同じ

// if querystring parameter has a value 
if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["code"])) 
    // then use its value 

(それが存在だ場合 - そのため@davisleepsの回答を参照してください) https://stackoverflow.com/a/8598088/179972

+0

しようとする場合があります信じています。 – Darren

+0

これは問題なく動作しています。私はこれで簡単なセッションをすることができないとは信じられない、私はクッキーを使用する必要があります。 – Darren

+0

これはあなたの最初の質問にはありませんが、わからない場合はnullもチェックしてください。問題に関連していると思われる場合は、質問を更新してより多くの情報とより多くのコードを提供することができます。 –

0

は、私はあなたが私が持っているすべてをCurrentHandlerとCurrentNotificationある

myHttpContext.Session["code"] = code; 
関連する問題