最近在做一个项目,这个项目是采用的Web服务,客户端是WinCE 4.1+.Net Framework CF版。大家知道,要保存当前会话状态(当前登录的用户信息,当前操作的单据等)最好是用Session来保存,Web service中也提供了session的支持。在一般的应用中使用Session是没有问题的,只需要把声明一个CookieContainer对象就可以了。如下:

.Net Framework CF版中没有Cookie容器,也能使用Session保存会话状态Service s=new Service();
.Net Framework CF版中没有Cookie容器,也能使用Session保存会话状态s.CookieContainer
=new CookieContainer();
问题出现了,在.Net Framework 精简版中没有Cookie容器对象,难道就是说不能用Session了吗?那该如果保存会话状态呢?

经过几天的思考后,终于想到了一个解决办法:在服务器端用一个静态的HashTable模拟Session对象,用客户端的IP地址作为关键字,代码如下:
 1.Net Framework CF版中没有Cookie容器,也能使用Session保存会话状态public class Global : System.Web.HttpApplication
 2}

下面是调用代码:
 1.Net Framework CF版中没有Cookie容器,也能使用Session保存会话状态public class Service : System.Web.Services.WebService
 2}

经过测试,以上代码完全可行,只是使用的时候要小心,因为同一个IP地址访问Web服务,即使是退出客户端应用程序,换个操作员重新登录,仍然会使用同一个Session,这就需要在服务器端判断,在适当的时候启用新的Session会话.

相关文章: