我不理解webservices会话的概念。一方面,您可以在DataAnnotation中允许会话:
[WebMethod(EnableSession = true)]
在另一个中,您可以在IIS中配置会话状态: 所以我将会话状态置于过程中并将延迟设置为20分钟。
然后在我的网络服务中,我尝试获取类似的会话ID:
return HttpContext.Current.Session.SessionID
我使用winform获取此信息并调用Web服务。
每次通话时会话ID都会更改。我不明白为什么,beaucoup SessionState设置为20分钟......
我可能错了吗?你能解释一下吗?
SessionID是否与IIS中的会话状态相对应?
答案 0 :(得分:1)
我在想一个解决方案,但后来我找到了这个帖子:
How to keep session alive between two calls to a web service in a c# application?
我希望这会有所帮助。
答案 1 :(得分:1)
必须有一些东西将请求连接到特定会话。通常会使用cookie。此cookie与响应一起发送,因此调用应用程序必须记住该cookie并将其与下一个请求一起发送。如果没有cookie,请求就会被视为新会话。
浏览器默认处理此问题(除非特别关闭),对于其他应用程序,您需要自己进行cookie管理。为此,您需要使用将在您的请求之间共享的单个CookieContainer。
有关详细信息,请参阅Marius在答案中的link。
答案 2 :(得分:0)
如果您希望通过用户会话生命周期保持sessionID相同,则应将global.asax文件添加到Web项目并实现Session_Start方法。
请检查此链接: https://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.sessionid.aspx