c# - 如果我有静态变量,WebServices 是无状态的吗?

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

假设我有一个带有很多方法的 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/

相关文章:

c# - 寻找特定的正则表达式

c# - WP7 C# - 如何更改 Pivot 标题的样式

c# - 字符串前的C# '@'

c# - 将 VB.Net 代码转换为 C# 时出现逻辑错误

c# - 如何使用 VB.Net/C# 将图像从 SQL 数据库导出到特定文件夹?

c# - ManagedThreadId不断增加

html - vb.net HtmlAgilityPack 在div之后插入字符串

java - OpenXava 框架支持 Web 服务吗?

ios - SoapRequest 到 iOS 上的 NSString?

c# - 无法添加服务引用