为BizTalk中的独立适配器启用默认应用程序域有什么含义?
我们最近在BizTalk中遇到以下错误 执行接收管道时失败:“Microsoft.BizTalk.DefaultPipelines.PassThruReceive,Microsoft.BizTalk.DefaultPipelines,版本=3.0.1.0,区域性=中性,PublicKeyToken=31bf3856ad364e35”源:“未知”接收端口:“CustomerAPI”URI:“/Service.svc”原因:试图访问卸载的AppDomain 通过研究这个错误,我们得出了上述结论 承载SOAP适配器的默认AppDomain被卸载,导致主机进程挂起 问题: 承载SOAP适配器的进程挂起,导致进程中的所有其他Web服务挂起。这可能导致以下错误: 执行响应(发送)管道时失败:“未知”源:“未知”接收端口:TwoWayLatencyLopBack_rExport”URI:“/TwoWayLatencyRxSOAP/TwoWayLatencyWS.asmx”原因:试图访问卸载的AppDomain 原因 SOAP适配器在IIS进程空间中运行。如果IIS AppPool中存在多个Web服务,则每个Web服务最终都有自己的AppDomain 默认情况下,所有消息传递引擎对象都在第一个AppDomain(即,与第一个Web服务相对应的AppDomain)中创建。如果第一个Web服务由于任何原因长时间处于非活动状态,IIS将卸载第一个AppDomain。发生这种情况时,托管过程中的所有服务都将无法使用 分辨率 要防止卸载AppDomain,请执行以下过程:为BizTalk中的独立适配器启用默认应用程序域有什么含义?,biztalk,biztalk-2013r2,Biztalk,Biztalk 2013r2,我们最近在BizTalk中遇到以下错误 执行接收管道时失败:“Microsoft.BizTalk.DefaultPipelines.PassThruReceive,Microsoft.BizTalk.DefaultPipelines,版本=3.0.1.0,区域性=中性,PublicKeyToken=31bf3856ad364e35”源:“未知”接收端口:“CustomerAPI”URI:“/Service.svc”原因:试图访问卸载的AppDomain 通过研究这个错误,我们得出了上述结论 承载
如果没有缺点,为什么默认情况下不为所有隔离主机启用此选项?在单独的AppDomain中执行会使它们之间设置的边界更加安全。它还使IIS在不重新启动整个过程的情况下更容易释放/释放资源-如果某个特定的服务/站点未被使用,则其AppDomain可以比重新启动w3wp.exe更便宜地拆除
但是,在本例中,BizTalk似乎尝试了两种方式—允许IIS通过使用多个AppDomain更好地管理安全性/内存/程序集加载,但无论消息请求何时传入,也只需继续使用默认的AppDomain。这似乎是一个设计缺陷,这使得很难看到您何时希望不检查该设置 “为什么所有孤立的主机都默认不打开此选项?”生活中有一些这样的问题没有人能回答,请阅读@mahieddine,我已经在我的问题中链接到了该博客:-)我与他一起工作是的,这也是我们的想法。我们关心的是什么东西应该彼此隔离,而不再是。当然,如果我们想再次隔离它们,我们可以将它们放在单独的应用程序池中。