gpt4 book ai didi

c# - ASP.NET 站点中静态变量的范围

转载 作者:可可西里 更新时间:2023-11-01 08:21:23 24 4
gpt4 key购买 nike

如果在同一个应用程序池中运行多个 ASP.NET 应用程序,我将拥有一个类的静态变量的多少个实例?

  1. 每个应用程序池一个?
  2. 每个应用程序池工作进程一个?
  3. 每个申请一个?
  4. 还有别的吗?

只是为了提供一些背景:

我正在特别考虑我们拥有的一个 ServiceLocator 实现,它在静态类变量中包含一个 UnityContainer。问题是,多个应用程序在 ServiceLocator 上注册一个容器是否会相互干扰?

应用程序在 .NET 4.0 上的 IIS 7.5 中运行,这应该有什么不同。

示例代码(简化)

public static class ServiceLocator
{
private static IUnityContainer _container;

public static void Initialize(IUnityContainer container)
{
if (_container != null)
{
throw new ApplicationException("Initialize should only be called once!");
}
_container = container;
}

}

如果我从在同一个应用程序池中运行的两个不同的 Web 应用程序运行它,通常在 Application_Start 中,它会在第二次调用时抛出异常吗?它会一直抛出异常吗?它永远不会抛出异常吗?它会在某些配置中抛出异常吗?

更新:我知道每个应用程序域都有一个静态变量实例。因此,问题可以改写为“如果在同一个应用程序池中运行多个 ASP.NET 应用程序,我将拥有多少个应用程序域?”

我找了很多地方,但没有找到任何权威的引用资料。感谢您提供任何帮助,最好引用 Microsoft 官方文档。

最佳答案

If running multiple ASP.NET applications in the same application pool, how many App Domains will I have?

每个应用程序池可以有多个工作进程,每个工作进程将运行不同的应用程序实例。应用程序的每个实例 都有一个单独的AppDomain - 因此您的原始问题的答案是每个应用程序实例

关于c# - ASP.NET 站点中静态变量的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17390248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com