假设我有一个带有很多方法的 Web 服务,并且该 Web 服务上有一个公共(public)共享变量,如果我收到来自客户端 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检查变量state的值时,它是true还是false?
最佳答案
静态变量将在所有代理调用之间共享,只要它不是网络花园并且是进程内实现。静态变量的作用域为应用程序域。
在上述情况下,客户端 B 将看到客户端 A 设置的值。
如果它是一个网络场,则静态变量将针对每个网络服务器,并且可能会在网络请求中显示奇怪的行为。
作为一般说明,由于锁定等原因,建议对跨 Web 请求的可写共享值极其谨慎。
关于c# - 如果我有静态变量,WebServices 是无状态的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23259212/