【发布时间】:2023-03-18 10:39:01
【问题描述】:
这里有两个问题都得到了高度评价,但看似矛盾的答案。
静态变量的实际作用域是什么?
就我而言,假设我有一个在 IIS 下运行的 WCF 服务。前面有负载平衡器的几台服务器。每台服务器上有一个站点,还有一个应用程序池。假设在实现服务的类中存储了一个静态变量。
变量是否只在工作进程中持续存在?应用程序池?服务器?我试图研究它,但在这里找到了两个相互竞争的答案。
在这篇文章下: IIS app pools, worker processes, app domains
回复说“每个工作进程都是运行您的站点的不同程序,有自己的 [自己的?] 静态变量”
然而在这个帖子下: Lifetime of ASP.NET Static Variable
回复说“静态变量是每个池”
也许我只是不明白这些帖子,但它们似乎相互矛盾?
当我检查时,我似乎有几个工作进程正在运行。因此我的问题。
任何帮助将不胜感激。我试图重构一些东西而不使用静态变量,因为它看起来很冒险并且暴露了并发问题,但是我很不舒服在不了解当前行为的情况下提出更改。谢谢!
【问题讨论】:
-
看看这个thread 它解释了什么是 ASP.NET 中的静态变量范围
-
那么它是每个工作进程的吗?