网络服务中的静态变量是否在服务器上所有正在运行的网络服务调用之间共享?
在我的情况下,我想要一个服务器范围的同步锁,我相信我可以用一个
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/