Dlo*_*ker 18 asp.net iis-7 appdomain .net-4.0
我有一个在具有多个应用程序域的IIS 7上运行的ASP.NET应用程序,我无法理解为什么在一个进程中有多个应用程序域.我已经使用了我的代码库,而且我没有明确地创建第二个应用程序域.回收可能没有超时吗?
在windbg中,!dumpdomain向我显示以下结果:(过滤为仅显示应用程序域的名称):
Line 59: Name: None
Line 66: Name: None
Line 372: Name: DefaultDomain
Line 460: Name: /LM/W3SVC/1/ROOT/MyAppDomain-1-129882892717131250
Line 4437: Name: /LM/W3SVC/1/ROOT/MyAppDomain-4-129285605131450579
Run Code Online (Sandbox Code Playgroud)
即使您没有创建AppDomain
,您正在使用的库也可能是.您使用的是哪些第三方组件?您是否有任何可能负责的Inversion of Control或动态代理库?以下是对Castle发生这种情况的解释.
您确定该应用程序仅在IIS中的一个位置运行吗?可以让多个IIS站点/应用程序运行相同的文件.这与(1)从数据库而不是应用程序获取调试信息以及(2)由于编辑web.config
一致导致重复域的回收一致.如果一个位置比另一个位置更常见,这可以解释为什么有时只有一个位置AppDomain
.
如果您正在利用ASP.NET的动态编译和卷影复制功能,ASP.NET有时会有多个AppDomain
s.Jim Schubert写了一篇名为ASP.NET,AppDomains和阴影复制的文章,它更详细地解释了这一点,并就如何修改web.config
以定制它提出了一些建议.他还有一个有用的答案:如果我覆盖DLL,我的ASP.NET应用程序是否会停止执行? 可以通过设置禁用阴影复制<hostingEnvironment shadowCopyBinAssemblies="false" />
.
我迷上了Jim Schubert的博客,最后阅读了关于仅允许一个.NET应用程序的单一实例的这篇不相关的帖子.如果所有其他方法都失败了,您可以使用此方法确保只运行一个应用程序实例.
归档时间: |
|
查看次数: |
2063 次 |
最近记录: |