IIS7:一个为'YYYYY'应用程序池提供服务的进程与Windows Process Activation Service发生了致命的通信错误。

56
我们正在使用一个32位的Windows Server 2008,其中安装了IIS版本7。
我们试图发布一个asp.net 4.0的Web应用程序,但到目前为止,我们的尝试只在服务器日志中产生了少数警告,而并没有停止4.0应用程序池。

“ASP.NET v4.0”应用程序池的一个进程发生了与Windows进程激活服务之间的致命通信错误。该进程的ID为“1904”。数据字段包含错误号码。

该应用程序正在4.0应用程序池和默认网站下运行。
此外,我们还有一些旧的.asp文件可以完美运行。
甚至当尝试发布一个空白的(仅包含一行文本).aspx文件时,也失败了... 我们已经很久没有更多的想法了,所以任何形式的建议都将不胜感激...


2
@ScottE 链接已失效。 - Martijn
1
更新的链接:http://mvolo.com/troubleshooting-iis7-503-quotservice-unavailablequot-errors-with-startup-debugging/ - William Gross
1
在我的情况下,问题是应用程序代码中的无限递归循环。 - Mohsen Tavoosi محسن طاوسی
1
我知道这篇文章已经有点老了,但是我必须说当我在寻找解决方案时,它并没有帮助到我。我必须说我的问题与数据库用户有关。他们没有执行权限。再见。 - GenTech
7个回答

15

Debug Diagnostics Tool(DebugDiag)可以救命。 它创建并分析IIS崩溃转储。 一旦看到调用堆栈,我在几分钟内就找出了我的崩溃原因。

IIS应用程序池崩溃和Debug Diag


3
以下是翻译的结果:为了获取更多信息,这里有一篇 TechNet 博客文章,展示了如何配置 DebugDiag 工具来捕获崩溃转储:https://blogs.msdn.microsoft.com/parvez/2016/08/06/iis-application-pool-crash-and-debug-diag/ - Jeff Miles
强烈推荐这个解决方案。在我们的情况下,它被证明是一个递归方法。 - Karlth

15

我整整一天都在调试这个问题,当我快要把建筑物烧毁时,我发现了Sysinternals的进程监视器工具

将其设置为监视w3wp.exe,并在浏览器中发出请求后检查它退出之前的最后事件。希望这能帮助更多的读者。


3
我的问题是缺少 NuGet 包(在我这里是 System.Net.Primitives)。 - Dany Gauthier
4
我的情况是应用程序代码中存在一个无限递归循环的问题。 - Mohsen Tavoosi محسن طاوسی
我有许多缺失的文件和某种类型的错误构建。我的部署设置出了问题。 - Jason Cheng
在我的情况下,问题是“ApplicationPoolIdentity”没有读取权限。 请参见:https://dev59.com/yms05IYBdhLWcg3wR_63 - mathijsuitmegen
对我来说,问题出在IIS无法识别URL重写和应用程序请求路由。 - jrap
它运行了,没有显示明确的错误,但最后一个工作操作是访问%systemroot%,失败了。 - Francesco B.

13

确保 IIS 中每个 应用程序池(Application Pool) 在 高级设置 下,启用 32 位应用程序 设置为True

IIS 截图


16
您能否解释一下为什么这可以解决OP的问题?我问这个是因为我在64位Windows Server 2008 R2上遇到了同样的问题,想知道这个解决方案是否适用于我的情况。谢谢! - sfarbota
1
如果我不想在AppPool上使用32位应用程序,而确实需要64位应用程序怎么办?对于“仅运行64位”场景,有什么解决方案? - Zafar
1
遇到了同样的问题。但是这很奇怪。我把那个设置改成true,应用更改,然后再把它改回false,猜猜会发生什么,它依然能正常工作……我对此感到困惑不解…… - Marc-Andre R.
24
这是一个转移话题,而不是问题的解决方案。问题在于导致应用程序失败的原因。 - Stan
4
对我而言,Windows日志显示了进程虚拟内存无法增加的问题。我认为启用“启用32位应用程序”会将进程大小限制在2GB,并在达到极限时强制进行池重置。你也可以在应用程序池的高级参数中设置虚拟内存限制。 - Pak
显示剩余3条评论

1

我最近遇到了这个问题。我们的组织将运行应用程序池的帐户限制为Active Directory中一组选定的服务器。我发现我没有将托管应用程序的其中一台机器添加到AD中帐户的“登录到”列表中。


1
当我遇到这个问题时,我从MSDN安装了“Visual Studio 2015远程工具”。 我将我的本地VS连接到服务器进行调试。
我知道有些人可能没有安装或访问其他服务器的能力,但我认为这是一个可选项。

0
对我来说,问题是一个缺少元素的配置文件。

0
在我们的情况下,问题与在Configuration(IAppBuilder app)方法中使用app.UseCors(corsOptions)有关。 该问题还伴随着IIS响应时间的增加和502错误的激增。尽管我们不知道它是如何引起这个问题的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接