C# ASP.NET/WCF/IIS中静态变量的作用域是什么?
这里有两个问题都得到了高度支持,但答案似乎相互矛盾 静态变量的实际范围是什么 在我的例子中,假设我有一个在IIS下运行的WCF服务。多台服务器,前面有一个负载平衡器。每个服务器上有一个站点,还有一个应用程序池。假设在实现服务的类中存储了一个静态变量 该变量是否仅在工作进程中持续存在?应用程序池?服务器?我试图研究它,但在这里发现了两个相互矛盾的答案 在该员额下: 回复说“每个工作进程都是运行您的站点的不同程序,都有自己的静态变量” 但在这一职位下: 回答说“静态变量是每个池的” 也许我只是不理解这些帖子,但它们似乎相互矛盾 当我检查时,似乎有几个工作进程正在运行。这就是我的问题C# ASP.NET/WCF/IIS中静态变量的作用域是什么?,c#,asp.net,.net,wcf,iis,C#,Asp.net,.net,Wcf,Iis,这里有两个问题都得到了高度支持,但答案似乎相互矛盾 静态变量的实际范围是什么 在我的例子中,假设我有一个在IIS下运行的WCF服务。多台服务器,前面有一个负载平衡器。每个服务器上有一个站点,还有一个应用程序池。假设在实现服务的类中存储了一个静态变量 该变量是否仅在工作进程中持续存在?应用程序池?服务器?我试图研究它,但在这里发现了两个相互矛盾的答案 在该员额下: 回复说“每个工作进程都是运行您的站点的不同程序,都有自己的静态变量” 但在这一职位下: 回答说“静态变量是每个池的” 也许我只是不
任何帮助都将不胜感激。我试图重构一些东西,避免使用静态变量,因为这似乎有风险,并暴露出并发性问题,但在不了解当前行为的情况下提出更改,我感到非常不舒服。谢谢 静态变量在应用程序域的生命周期中一直存在。因此,有两件事将重置静态变量:应用程序域重新启动或使用新类 每个应用程序池可以有多个工作进程 每个辅助进程将运行不同的应用程序实例 应用程序的每个实例都有一个单独的AppDomain- 每个应用程序实例一个。 发生以下任何情况时,IIS重新启动asp.net应用程序时,静态变量将丢失
ASP.NET应用程序状态/变量将不起作用,因为它们存储在内存中,因此它们不是持久的,因此它们在应用程序域重新启动时也会丢失。静态变量将在应用程序域的生命周期内持续存在。因此,有两件事将重置静态变量:应用程序域重新启动或使用新类 每个应用程序池可以有多个工作进程 每个辅助进程将运行不同的应用程序实例 应用程序的每个实例都有一个单独的AppDomain- 每个应用程序实例一个。 发生以下任何情况时,IIS重新启动asp.net应用程序时,静态变量将丢失
ASP.NET应用程序状态/变量将不起作用,因为它们存储在内存中,因此它们不是持久的,因此它们在应用程序域重新启动时也会丢失。当我们在web中定义静态字段时,wcf将仅与应用程序域限制共享。当我们在web中定义静态字段时,wcf它将仅与应用程序域限制共享。看这一点,它解释了ASP.NETSo中的静态变量范围,它是每个工作进程的吗?看这一点,它解释了ASP.NETSo中的静态变量范围,它是每个工作进程的吗?一个工作进程可以运行多个应用程序实例。。把它想象成一个迷你cpu,你可以在你的cpu上运行许多exe,每个exe都有一个静态变量还有一件事。。。假设我的应用程序是IIS上唯一的应用程序,工作进程是否可以同时运行我的应用程序的多个实例?是的,工作进程可能会生成线程来启动应用程序域。工作进程可以运行多个应用程序实例。。把它想象成一个迷你cpu,你可以在你的cpu上运行许多exe,每个exe都有一个静态变量还有一件事。。。假设我的应用程序是IIS上唯一的应用程序,工作进程是否可以同时运行我的应用程序的多个实例?是的,这是可能的,因为工作进程生成线程以启动应用程序域