如果我有静态变量,Web服务是无状态的吗?

时间:2014-04-24 03:19:46

标签: c# vb.net web-services variables static

假设我有一堆方法的Web服务,并且该web服务上有一个公共共享变量,如果我从客户端A收到请求并且他更改了此变量的值,那么客户端B将看到价值由客户A改变?

让我试着更好地解释自己,例如

假设我有这个变量:

Public Shared state As Boolean = False(Visual Basic)
public static bool state = false; (C#)

然后客户端A

 state = true (VB)
 state = true; (C#) 

当客户B检查变量状态的值时,它是真还是假?

1 个答案:

答案 0 :(得分:6)

静态变量将在所有代理调用中共享,只要它不是Web园并且是进程内实现。静态变量的范围限定为应用程序域。

在上述情况下,客户B将看到客户A设置的值。

如果它是一个Web场,那么静态变量将是每个Web服务器,并且可能在Web请求中显示奇怪的行为。

作为一般说明,由于锁定等原因,建议对Web请求中的可写共享值保持极其谨慎。