我想通过remoting来传递含有cookie类型类希望大家提示
解决方案 »
- 如何加快DataGridView的显示速度??
- 关于timer循环的问题
- 请帮助一个supermap二次开发的初学者
- window.showModalDialog的问题!
- C#判断FTP服务器上是否存在某一个文件? 高分在线等!
- 用C#能不能编出像'热血传奇'一样的大型网络游戏?
- web系统开发过程中,命名空间一般是什么时候才增加的?好象留言本跟论坛,他们的命名空间是怎么定呢?
- 《Windows GUI 高级编程》里面的问题???
- 如何得到listView中选定得item的索引值(在线等待ing)
- 使用Remoting做类似于MSN的p2p项目中遇到的一些问题?
- 谁能告诉我一下,Label控件如何在图片上透明啊? 在线等!!!!
- 怎么在客户端控制后台生成控件的visible属性?比较急,各位帮忙看看,出出主意~~
//注意,需要引用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文件中。