欢迎光临
我们一直在努力

实现会话持久化(Permanent Session)-ASP教程,ASP应用

建站超值云服务器,限时71元/月

  

//注意,需要引用system.runtime.serialization.formatters.soap.dll程序集 

public const string sessiondatapath = "c:\sessiondata\" ;

private void application_acquirerequeststate( object sender, eventargs e)                           

 {     

       system.io.filestream fs; 

        system.runtime.serialization.formatters.soap.soapformatter sf  =  new system.runtime.serialization.formatters.soap.soapformatter(); 

        try 

        {  

            //获取特定的cookie,如果找不到,则退出.

            httpcookie cookie = request.cookies["permsessionid"]; 

            if(cookie == null) 

            {

                //如果找不到,则生成一个(使用伪随机的sessionid) 

               cookie = new httpcookie("permsessionid", session.sessionid);

               //使该cookie在1星期之后到期

               cookie.expires = datetime.now.adddays(7);

               //将其发往客户端浏览器 

               response.cookies.add(cookie); 

            }

             //文件名等于该cookie的值 

             string permsessionid = cookie.value; 

             //生成数据文件的名称 

            string filename = sessiondatapath + permsessionid.tostring() + ".xml"; 

            //打开文件,如果出错,则退出 

            fs = new system.io.filestream(filename, io.filemode.open); 

            //反序列化包含值的hashtable hashtable ht = (hashtable)sf.deserialize(fs); 

            //将数据移到session集合中 

            session.clear(); 

            foreach( string key in ht.keys )

            {

                session(key) = ht(key); 

            }

      } 

     catch(exception ex) {} 

      finally 

      {

           if( fs != null ) fs.close();

      } 

}

         以上代码实现了会话持久话的过程,aquirerequeststate事件处理程序中的代码会试图读取一个名为permsessionid的特殊的客户端cookie。该cookie的值被视为一个xml(在服务器上)的名称,该xml文件包含在前一个请求结束时保存下来的session变量的值,因此代码会在页面看到新值之前填充session集合。如果该cookie尚不存在,说明现在看到的是从客户端发出的第一个请求。所以代码会创建cookie,并在其内部存放独一无二的字符串。同时也应该在releaserequeststate事件里创建一个服务端的xml文件,将所有session变量序列化到该xml文件中。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 实现会话持久化(Permanent Session)-ASP教程,ASP应用
分享到: 更多 (0)