WebService客户端怎么共享Session

wziyx513225244 2011-08-30 01:34:23
本人用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加入即可。
此法不知如何实现,请高手指点,或者给出更好的解决方案。
...全文
378 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我给你一个独立的解释吧。

你的服务器无所谓什么asp.net Session集合概念,根本不用支持Session。当客户端(首先)访问“申请SessionID”服务功能时,给客户端返回一个SessionID编号。除了这个功能以外的所有功能方法,都要有一个SessionID参数,这就足够了。你的web service服务器不支持显示的asp.net Session,而是在业务逻辑中体现一个SessionID编号概念,那么就会更轻快、更通用。

而对于多个客户端应用程序、多台电脑,只要它们可以互相传递SessionID编号就行了。因为服务对于SessionID概念体现的更简单直观,也用不着纠结什么如何为web service客户端代理长期维持CookieContainer啊、域啊、Get/Set啊之类的设计问题。


把问题简单化之后,实际上我还是对你的业务设计表示怀疑。如果你想让不同的应用程序、甚至不同电脑上的应用程序单点登录,你应该首先设计出这些应用程序在客户端相互调用和协调的流程来,而不是仅仅纠结于后台处理方面。
  • 打赏
  • 举报
回复
[Quote=引用楼主 wziyx513225244 的回复:]
多个webService代理,只要含有相同的Cookie就能共用相同的Session。其中Cookie通过代理类
CookieContainer.GetCookie(new URI("***"))["SessionID"]取得,如果其他的WebService代理
类需要用相同的Session,则可以用CookieContainer.Add方法将取得的Cookie加入即可。
[/Quote]
那是指给同一个进程中的不同地方的代码,假设实例化了新的服务代理对象,那么新的对象中的cookie中的SessionID值怎么设置的问题(在第一次访问服务器之前需要设置好SessionID)。

你的问题跟它不相干。

szjarvis 2011-09-01
  • 打赏
  • 举报
回复
不同电脑间实现session共享? 可存在数据库进行共享。
wziyx513225244 2011-09-01
  • 打赏
  • 举报
回复
有人回复就给分啊……
wziyx513225244 2011-09-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sp1234 的回复:]
我给你一个独立的解释吧。

你的服务器无所谓什么asp.net Session集合概念,根本不用支持Session。当客户端(首先)访问“申请SessionID”服务功能时,给客户端返回一个SessionID编号。除了这个功能以外的所有功能方法,都要有一个SessionID参数,这就足够了。你的web service服务器不支持显示的asp.net Session,而是在业务逻辑中体现一个Se……
[/Quote]
嗯,您说的方法很正确,我上面的例子知识为了学习,进行验证的。现在我们的项目差不多和你分析的差不多。
非常感谢您的回答,让我受益匪浅。
同样也非常感谢3楼的同志。
wziyx513225244 2011-08-31
  • 打赏
  • 举报
回复
给点力啊,同志们

12,166

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧