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

ASP.NET中Session高级使用技巧

在开发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; } }  

 感谢cat_hsfz同志所提供的第二种思路,非常好,在此之前我都采用的第一种方法。

你可能感兴趣的:(.net,String,session,Class,asp.net,dll)