如果在同一个应用程序池中运行多个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应用程序,我将拥有多少个应用程序域?”
我一直在寻找很多,但没有找到任何权威的参考。任何帮助表示赞赏,最好参考官方Microsoft文档。