我们有一个调用一些非托管代码的 WCF 服务。非托管代码使用 COM 并创建 COM 对象来完成一些遗留工作。我们注意到,当应用程序池重新循环发生时(由于 web.config 更改)。该服务并不总是能够在新的应用程序域中重新托管,并且 w3wp.exe 似乎已挂起。我没有收到错误或日志,只是我无法再与服务通信。杀死这个过程并开始一个新的炒锅。有没有办法告诉 IIS 不要使用应用程序域重新循环(由于 w3wp.exe 中的遗留/非托管代码)。我注意到,当在私有字节限制上使用循环时,有一个进程循环而不是应用程序域循环。我还能做些什么来找出 w3wp.exe 进程的状态以及它挂起的原因。
我还注意到不同的回收选项会产生不同的回收方式。在 IIS 中使用 UI 时,回收会删除进程并放入新进程。设置内存限制时也会发生同样的情况。但是在更改 Web 配置时,会发生应用程序域回收。是否有关于根据不同触发器发生哪种类型的再循环的信息,是否有配置方法?