我需要一些方法来定义.NET中的静态变量,而不是在Web服务调用之间共享。
我有一些网络方法可以使用"用户名" (字符串)和密码。在验证用户之后,我想使用"一些全局变量"我可以咨询这个"用户名"当我需要它。我不能使用静态变量,因为静态变量在webmethods调用之间共享,我需要在webservice调用之间不共享这个全局变量(因为它们可以由不同的用户调用,我需要执行的每个差异方法)。我还想过使用[thread id,username(string)]的静态字典,但是在不同的调用之间线程ID是相同的......
那么,任何想法如何定义Web服务调用之间不共享的全局变量(或静态变量)?
非常感谢。答案 0 :(得分:0)
如果我理解正确,您需要在当前会话中共享状态。如果是这样,你可以使用HttpContext.Current.Session集合,但是你需要将它添加到web.config
<configuration>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
</configuration>
答案 1 :(得分:0)
如何手动实施会话管理?
假设您在验证第一个请求后向客户端发送唯一的会话ID。
之后,客户端需要在每次调用服务方法时,通过向每个方法添加新参数或使用新的请求标头来传递此ID。
这样很容易在静态字典中实现会话变量,就像上面提到的那样,这个会话ID是关键。