双应用程序域在ASP.NET 4应用程序

我有一个ASP.NET应用程序在IIS 7上运行多个应用程序域,我不能理解为什么在单个进程中有多个应用程序域。我已经填补了我的代码库,而我并没有明确地创建第二个应用程序域。回收利用是否可能没有超时?

>这些双域将持续一段时间。
>如果由于Web配置或二进制更改而发生回收,则两个应用程序域都会关闭,两个应用程序域将启动。
>这些服务器每天需要几个二进制补丁和IISResets – 有时候有两个域,有时只有1个。
>网园艺被禁用
>我发现这是因为在应用程序中有一个计时器心跳到数据库,并注意到有一天服务器有两个心跳。

在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

解决方法

>即使您没有创建AppDomain,您正在使用的库也许是。您使用的是哪些第三方组件?您是否有任何反转控制或动态代理库可能负责?这是 Castle发生这种情况的解释。
>您确定应用程序仅在IIS中的一个位置运行吗?可能有多个IIS站点/应用程序运行相同的文件。这与(1)从数据库而不是应用程序获取调试信息一致,(2)由于编辑web.config而导致重复域的循环。如果一个位置比其他位置更常见,这可以解释为什么有时只有一个AppDomain。
>如果您利用ASP.NET的动态编辑和影子复制功能,ASP.NET有时会有多个AppDomains。吉姆·舒伯特(Jim Schubert)撰写了一篇名为 ASP.NET,AppDomains,and shadow-copying文章,它更详细地解释了这一点,并提出了如何修改web.config来定制这个的几个建议。他还有一个有用的答案在 Does my ASP.NET application stop executing if I overwrite the DLLs?影子复制可以通过设置< hostingEnvironment shadowcopyBinAssemblies =“false”/>禁用。

更新

我被吸入了Jim Schubert的博客,最终在Allowing Only A Single Instance of a .NET application阅读了这个不相关的帖子。如果还有一些失败,你可以使用这种方法来确保只有一个应用程序的实例正在运行。

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....