asp.net - ASP.NET Web 服务中的静态字段

标签 asp.net web-services multithreading synchronization static-members

网络服务中的静态变量是否在服务器上所有正在运行的网络服务调用之间共享?

在我的情况下,我想要一个服务器范围的同步锁,我相信我可以用一个

private static Object syncHandle = new Object();

那是对的吗?

最佳答案

是的,它们都是每个 AppDomain 共享的,这就是为什么通常不应使用它们!

通常不应使用它们,因为它们不太可能被正确使用。也因为有更安全的替代方案,比如 HttpContext.Cache,甚至 Session 状态。

尽管如此,如果您封装了对这些静态成员的所有访问,并且如果您正确处理锁定,那么您将拥有一个安全的实现,然后可能会成为瓶颈,所有线程都在争夺共享资源。最好不要做。

此外,您似乎指的是 ASMX Web 服务,但您应该指定 ASMX 或 WCF。

关于asp.net - ASP.NET Web 服务中的静态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/642465/

相关文章:

asp.net - 如果更新面板的服务器端捕获到异常,您能以某种方式看到堆栈跟踪吗?

Javascript 将月份添加到变量

web-services - 使用 web 服务来包装数据访问层真的是个坏主意吗?

c++ - 在多线程 C/C++ 中,malloc/new 在分配内存时是否锁定堆

C# 应用程序创建许多连接线程,MySQL

c# - 尝试通过应用而非 Management Studio 连接时登录失败

c# - Web 服务中的 SPSite 抛出 401 错误

oracle - ORDS 与 Oracle Apex 之间的功能差异

java - 向 SOAP 消息添加 header

python - 线程 :must be a sequence, 中的异常不是实例