在ASP.net中,如何使用帮助程序类中的Cookie和Session?

时间:2012-01-26 18:32:46

标签: asp.net session cookies

我在每个aspx页面访问的单个静态类中处理用户数据的加载。我想在此过程中添加支持Cookie和Session的功能。但是,我发现Response.Cookies对象和Session对象都不能用于我的util类。

基本上,我现在拥有的是(在它自己的文件中):

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 个答案:

答案 0 :(得分: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;  
        }  
    }  
}  

课程档案中​​的Cookie

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

答案 1 :(得分:2)

你可以使用HttpContext.Current.Session和HttpContext.Current.Request,但要注意Session在http管道的所有阶段都不可用,例如,如果使用HttpModule会话未在BeginRequest中分配

答案 2 :(得分:1)

静态HttpContext.Current成员公开了大多数这些属性。请参阅:http://msdn.microsoft.com/en-us/library/system.web.httpcontext.current.aspx

答案 3 :(得分:1)

您可以使用静态HttpContext.Current变量获取HttpContext中的任何内容。实际上并不推荐这样做 - 它将你的代码直接绑定到asp.net,并使得编写测试成为一种巨大的痛苦。通常,您可能希望使用更多可以传递依赖关系的实例类,例如您希望访问的会话变量。

答案 4 :(得分:1)

你应该像这样使用它, HttpContext.Current.Request.Cookies [ “用户”]