引用:http://blog.csdn.net/wonsoft/archive/2009/01/23/3851594.aspx
在开发Aspx .NET软件时,有时需要把常用的东西封装到一个非PAGE类中,文章介绍在非Page类中使用Session的方法。
一、PAGE参数法:
1、DLL中类的实现。
public class UserManager
{
private Page page;
public UserManager(Page dd)
{
page=dd;
}
public string GetUser()
{
return page.Session["user"];
}
}
2、PAGE中调用:
public class CheckPage : Page
{
public CheckPage()
{
UserManager um = new UserManager (this);
string usr = um.GetUser();
//具体处理
}
}
二、直接调用System.Web.HttpContext.Current.Session["key"]法。
如果在非Page类中直接使用System.Web.HttpContext.Current.Session["key"]肯定会抛出异常,因为此时System.Web.HttpContext.Current.Session=null。一个类要访问Session,必须实现(或在基类已实现)IRequireSessionState接口,这是一个标记接口,不需要实现任何函数,但你不用它标记一下你的类就肯定访问不了Session。
public class UseSession : System.Web.SessionState.IRequiresSessionState {
static public int GetSessionCount()
{
return System.Web.HttpContext.Current.Session.Count;
// 说明:如果不继承IRequiresSessionState接口的话,此时会抛出异常。
}
}
如果你只需要读Session,也可以用IReadonlySessionState接口,效果类似,不过是对Session只读。
public class UseSession : System.Web.SessionState.IReadOnlySessionState
{
static public int GetSessionCount()
{
return System.Web.HttpContext.Current.Session.Count;
}
}