【问题标题】:Does SessionID change for each call to webservice?每次调用 web 服务时 SessionID 都会改变吗?
【发布时间】:2016-02-13 20:49:40
【问题描述】:

我不理解网络服务会话的概念。一方面,您可以像这样在 DataAnnotation 中允许会话:

    [WebMethod(EnableSession = true)]

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

然后在我的网络服务中,我尝试像这样获取会话 ID:

   return HttpContext.Current.Session.SessionID

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

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

我可能走错路了吗?能解释一下吗?

SessionID是否对应IIS中的Session State?

【问题讨论】:

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


    【解决方案1】:

    我正在考虑一个解决方案,但后来我发现了这个帖子:

    How to keep session alive between two calls to a web service in a c# application?

    我希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      如果您想在整个用户会话生命周期中保持 sessionID 相同,您应该将 global.asax 文件添加到您的 Web 项目并实现 Session_Start 方法。

      请查看此链接: https://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.sessionid.aspx

      【讨论】:

        【解决方案3】:

        必须有某种东西将请求连接到特定会话。通常为此使用 cookie。此 cookie 与响应一起发送,因此调用应用程序必须记住该 cookie 并将其与下一个请求一起发送。如果没有 cookie,请求会被当作新会话处理。

        默认情况下,浏览器会处理此问题(除非特别关闭),对于其他应用程序,您需要自己进行 cookie 管理。为此,您需要使用将在您的请求之间共享的单个 CookieContainer。

        有关更多详细信息,请参阅 Marius 回答中的link

        【讨论】:

          猜你喜欢
          • 2021-03-18
          • 1970-01-01
          • 2020-11-17
          • 1970-01-01
          • 2017-10-30
          • 2019-08-14
          • 2021-03-19
          • 1970-01-01
          相关资源
          最近更新 更多