在.NET中定义一个不在Web Service调用之间共享的变量

时间:2014-05-01 21:05:02

标签: .net web-services global-variables static-variables

我需要一些方法来定义.NET中的静态变量,而不是在Web服务调用之间共享。

我有一些网络方法可以使用"用户名" (字符串)和密码。在验证用户之后,我想使用"一些全局变量"我可以咨询这个"用户名"当我需要它。我不能使用静态变量,因为静态变量在webmethods调用之间共享,我需要在webservice调用之间不共享这个全局变量(因为它们可以由不同的用户调用,我需要执行的每个差异方法)。我还想过使用[thread id,username(string)]的静态字典,但是在不同的调用之间线程ID是相同的......

那么,任何想法如何定义Web服务调用之间不共享的全局变量(或静态变量)?

非常感谢。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您需要在当前会话中共享状态。如果是这样,你可以使用HttpContext.Current.Session集合,但是你需要将它添加到web.config

<configuration>
    <system.serviceModel>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    </system.serviceModel>
</configuration>

答案 1 :(得分:0)

如何手动实施会话管理?

假设您在验证第一个请求后向客户端发送唯一的会话ID。

之后,客户端需要在每次调用服务方法时,通过向每个方法添加新参数或使用新的请求标头来传递此ID。

这样很容易在静态字典中实现会话变量,就像上面提到的那样,这个会话ID是关键。