如果在同一个应用程序池中运行多个 ASP.NET 应用程序,我将拥有多少个类的静态变量实例?
- 每个应用程序池一个?
- 每个应用程序池工作进程一个?
- 每个应用程序一个?
- 还有什么?
只是给出一些背景:
我正在特别考虑我们拥有的 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 应用程序,我将拥有多少个应用程序域?”
我一直在寻找很多,但还没有找到任何权威的参考资料。任何帮助表示赞赏,最好参考微软官方文档。