asp.net Session 高级使用

本文介绍了两种在非Page类中使用ASP.NET Session的方法。第一种是通过传递Page参数来访问Session,第二种是实现IRequireSessionState或IReadonlySessionState接口。文章详细展示了代码示例,并强调了不实现接口时会遇到的问题。
摘要由CSDN通过智能技术生成

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

一、PAGE参数法:

1、DLL中类的实现。
view plaincopy to clipboardprint?
public class UserManager    
{    
   private Page page;    
   public UserManager(Page dd)    
   {    
       page=dd;    
   }    
    public string GetUser()    
    {    
      return page.Session["user"];   
    }    
}   
public class UserManager 

   private Page page; 
   public UserManager(Page dd) 
   { 
       page=dd; 
   } 
    public string GetUser() 
    { 
      return page.Session["user"];
    } 
}

2、PAGE中调用:

view plaincopy to clipboardprint?
public class CheckPage : Page   
{   
    public CheckPage()   
    {   
        UserManager um = new UserManager (this);   
        string usr = um.GetUser();   
        //具体处理          
    }   

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。

view plaincopy to clipboardprint?
public class UseSession : System.Web.SessionState.IRequiresSessionState    {   
        static public int GetSessionCount()   
        {   
            return System.Web.HttpContext.Current.Session.Count;   
            // 说明:如果不继承IRequiresSessionState接口的话,此时会抛出异常。   
        }   
    } 
public class UseSession : System.Web.SessionState.IRequiresSessionState    {
        static public int GetSessionCount()
        {
            return System.Web.HttpContext.Current.Session.Count;
            // 说明:如果不继承IRequiresSessionState接口的话,此时会抛出异常。
        }
    }

如果你只需要读Session,也可以用IReadonlySessionState接口,效果类似,不过是对Session只读。

view plaincopy to clipboardprint?
public class UseSession : System.Web.SessionState.IReadOnlySessionState   
{   
    static public int GetSessionCount()   
    {   
        return System.Web.HttpContext.Current.Session.Count;   
    }   
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值