ASP.NET中Session高级使用技巧(在非Page类中使用Session)

引用:http://blog.csdn.net/wonsoft/archive/2009/01/23/3851594.aspx


在开发Aspx .NET软件时,有时需要把常用的东西封装到一个非PAGE类中,文章介绍在非Page类中使用Session的方法。

一、PAGE参数法:

1DLL中类的实现。

public class UserManager   

{   

   private Page page;   

   public UserManager(Page dd)   

    {   

        page=dd;   

    }   

    public string GetUser()   

     {   

      return page.Session["user"];   

     }   

}   

2PAGE中调用:

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;   

     }   

}  

你可能感兴趣的:(asp.net)