//注意,需要引用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文件中。
实现会话持久化(Permanent Session)-ASP教程,ASP应用
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 实现会话持久化(Permanent Session)-ASP教程,ASP应用
相关推荐
-      ASP 简介
-      SQL注入天书 – ASP注入漏洞全接触
-      用.net 处理xmlHttp发送异步请求
-      asp.net创建文件夹的IO类的问题
-      如何实现ASP.NET网站个性化
-      关于ASP.NET调用JavaScript的实现
-      ASP利用Google实现在线翻译功能
-      Asp无组件生成缩略图
