引用: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;
}
}