2012-01-26 1 views
1

私は自分のaspxページのそれぞれがアクセスする単一の静的なクラスでユーザーデータの読み込みを処理します。このプロセスにCookieとSessionをサポートする機能を追加したいと思います。しかし、私は、Response.CookiesオブジェクトとSessionオブジェクトの両方が私のutilクラスで利用できないことを発見しています。ASP.netでは、どのようにヘルパークラスのCookieとセッションを使用できますか?

基本的に、私は今、(それ自身のファイルに)あるものを持っている:

namespace myProject 
{  
    static class myUtil 
    { 
     public static myProject.User LoadUser() 
     { 
      //Look up user 
     } 
    } 
} 

は私がやりたいです:

namespace myProject 
{  
    static class myUtil 
    { 
     public static myProject.User LoadUser() 
     { 
      if (Session['user'] != null) 
      { user = Session['user']; } 
      else if (Response.Cookies['user'] != null) 
      { user = Response.Cookies['user']; } 
      else 
      {    
       //Look up user 
      } 
     } 
    } 
} 

がどのように私はこれを実現することができますか?現在の実装では、SessionおよびResponse.Cookiesへの参照はすべて、宣言されていないオブジェクトとみなされます。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Text.RegularExpressions; 
using System.Web.UI.Page; 
using System.Web.UI.WebControls; 

答えて

5

セッションクラスファイル内

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.SessionState; 
/// <summary> 
/// Summary description for GetSessionHelper 
/// </summary> 
public class SessionHelper : IRequiresSessionState 
{ 
    public object GetSession(string key) 
    { 
     //check session 
     if (HttpContext.Current.Session[key] != null) 
     { 
      //return session value 
      return HttpContext.Current.Session[key]; 
     } 
     else 
     { 
      //return empty string 
      return string.Empty; 
     } 
    } 
} 

クッキー

if (HttpContext.Current.Request.Cookies["CodeF"] != null) 
{ 
    string background = HttpContext.Current.Request.Cookies["CodeF"]["BackImage"].ToString(); 
     } 
+0

誰かがdownvoteの理由を説明できますか? – Pankaj

2

あなたはHttpContext.Current.SessionとHttpContext.Current.Requestを使用しますが、セッションのすべての段階では利用できないことに注意してくださいすることができます

は参考のため、ここでは現在のクラスのために輸入されていますhttpパイプライン、たとえばHttpModuleを使用している場合BeginRequestでセッションが割り当てられていない

1

静的なHttpContext.Current変数を使用して、HttpContext内の何でも得ることができます。これは実際にはお勧めできません - あなたのコードをasp.netに直接結びつけ、筆記試験のようなことを王の痛みにします。一般に、アクセスするセッション変数など、依存関係で渡すことができるインスタンスクラスをさらに使用することができます。

1

あなたはこのようにそれを使用する必要があり、 HttpContext.Current.Request.Cookies [ "ユーザー"]クラスファイル内

関連する問題