在IIS中,.NET AppDomain实例是否为单个应用程序独有?
同一IIS应用池中的多个应用是否共享AppDomain?
结论:默认情况下,同一IIS应用池内的所有IIS应用会共享同一个AppDomain实例
- 先理清楚IIS的核心对应关系:一个应用池对应一个独立的
w3wp.exe进程,池里的所有应用都运行在这个进程中。而IIS默认逻辑是,单个w3wp进程里只创建一个AppDomain,供池内所有应用共用。 - 你调试时看到App1和App2的AppDomain友好名称一致,这就是最直接的证明——同一AppDomain的友好名称必然相同,而App3因为属于另一个应用池,对应的AppDomain名称自然和前两者不一样。
- 要是想进一步验证,可以在App1和App2的代码里分别输出
AppDomain.CurrentDomain.Id的值,运行后会发现两者的ID完全一致,这是判断是否为同一AppDomain的核心依据。 - 额外说明:这种共享设计是为了减少资源开销、提升运行效率。如果需要让同一池内的应用隔离运行(各自使用独立AppDomain),可以修改应用的高级配置——比如开启「私有应用程序」属性,或者设置不同的信任级别,但这属于非常规操作,会增加服务器资源消耗。
内容的提问来源于stack exchange,提问作者Virus721
相关产品推荐
相关产品推荐

