首页 > 代码库 > 非Page类使用session(Httpcontext.session和page.session区别)
非Page类使用session(Httpcontext.session和page.session区别)
ASP.NET中Session高级使用技巧
在开发Aspx .NET软件时,有时需要把常用的东西封装到一个非PAGE类中,文章介绍在非Page类中使用Session的方法。
一、PAGE参数法:
1、DLL中类的实现。
[c-sharp] view plaincopy
- public class UserManager
- {
- private Page page;
- public UserManager(Page dd)
- {
- page=dd;
- }
- public string GetUser()
- {
- return page.Session["user"];
- }
- }
2、PAGE中调用:
[c-sharp] view plaincopy
- 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。
[c-sharp] view plaincopy
- public class UseSession : System.Web.SessionState.IRequiresSessionState {
- static public int GetSessionCount()
- {
- return System.Web.HttpContext.Current.Session.Count;
- // 说明:如果不继承IRequiresSessionState接口的话,此时会抛出异常。
- }
- }
如果你只需要读Session,也可以用IReadonlySessionState接口,效果类似,不过是对Session只读。
[c-sharp] view plaincopy
- public class UseSession : System.Web.SessionState.IReadOnlySessionState
- {
- static public int GetSessionCount()
- {
- return System.Web.HttpContext.Current.Session.Count;
- }
- }
非Page类使用session(Httpcontext.session和page.session区别)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。