每次调用webservice时SessionID都会更改吗?

时间:2015-11-12 13:50:07

标签: c# asp.net web-services session

我不理解webservices会话的概念。一方面,您可以在DataAnnotation中允许会话:

    [WebMethod(EnableSession = true)]

在另一个中,您可以在IIS中配置会话状态: 所以我将会话状态置于过程中并将延迟设置为20分钟。

然后在我的网络服务中,我尝试获取类似的会话ID:

   return HttpContext.Current.Session.SessionID

我使用winform获取此信息并调用Web服务。

每次通话时会话ID都会更改。我不明白为什么,beaucoup SessionState设置为20分钟......

我可能错了吗?你能解释一下吗?

SessionID是否与IIS中的会话状态相对应?

3 个答案:

答案 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