http://bbs.csdn.net/topics/370160447
本人用C#做了一个WebService,用来验证用户登录的,登录后保存用户的用户名。
客户端是SOAP方式写的,也是用C#语言实现的。
如果同一个账户在不同的电脑上登录,怎么使而两者共享WebService的Session啊。
这些代码:http://blog.csdn.net/wziyx513225244/article/details/6729272
网上有中解释是:
多个webService代理,只要含有相同的Cookie就能共用相同的Session。其中Cookie通过代理类
CookieContainer.GetCookie(new URI("***"))["SessionID"]取得,如果其他的WebService代理
类需要用相同的Session,则可以用CookieContainer.Add方法将取得的Cookie加入即可。
此法不知如何实现,请高手指点,或者给出更好的解决方案。
---------------------------------------------
你的服务器无所谓什么asp.net Session集合概念,根本不用支持Session。当客户端(首先)访问“申请SessionID”服务功能时,给客户端返回一个SessionID编号。除了这个功能以外的所有功能方法,都要有一个SessionID参数,这就足够了。你的web service服务器不支持显示的asp.net Session,而是在业务逻辑中体现一个SessionID编号概念,那么就会更轻快、更通用。
而对于多个客户端应用程序、多台电脑,只要它们可以互相传递SessionID编号就行了。因为服务对于SessionID概念体现的更简单直观,也用不着纠结什么如何为web service客户端代理长期维持CookieContainer啊、域啊、Get/Set啊之类的设计问题。
把问题简单化之后,实际上我还是对你的业务设计表示怀疑。如果你想让不同的应用程序、甚至不同电脑上的应用程序单点登录,你应该首先设计出这些应用程序在客户端相互调用和协调的流程来,而不是仅仅纠结于后台处理方面。