关于 asp.net:iisreset 后应用程序池未启动

Application Pools not starting after iisreset

在我开始之前,我知道使用 iisreset 被认为是不好的做法,但无论如何都不应该发生这种情况..

我们有什么:

  • 在 Windows Server 2003 R2(64 位和 32 位)上使用 IIS6 的几台机器

  • 多个 WCF Web 服务(.NET 运行时 2.0)部署在多个应用程序中,每个应用程序都有自己的应用程序池,每个应用程序池在其他 Windows 帐户下运行。

会发生什么:

  • 所有 appPools 启动,所有服务运行
  • IISReset 被执行(或机器重启)
  • IIS 重新启动,但并非所有应用程序池都正常启动。有时它们都会重新启动,有时一个或多个池无法启动。但是,它们可以手动启动。

这是"正常"的 iis 行为吗?我应该避免使用 iisreset,还是我们在 .NET 代码中做错了什么?


应用程序池应在 iisreset 时重新启动,但为了可靠性,它们确实在 iis 之外(在 COM 中)运行。这意味着如果应用程序行为不端,它们可能不会回来,但 IIS 和其他应用程序会(应该)回来。所以是的,这是"正常的"。

附言
作为 iisreset 的自豪用户,我也想"OUT"自己。不好的做法?呸! ;D


在第一个请求进来之前,IIS 不会立即启动 ASP.NET 工作进程 (w3wp.exe)。当您说"未启动"时,是否意味着您尝试访问某些 WCF Web 服务(在 iisreset 之后) ,并且由于 appPool 无法启动而出现 Service Unavailable 错误?您是否在事件日志中看到任何与 IIS W3SVC 相关的条目?

如果有,他们可能会告诉你为什么他们不能开始;把它们贴在这里。


原因:

在第一个请求进入之前,IIS 不会立即启动 ASP.NET 工作进程 (w3wp.exe)。当它显示"未启动"时,意味着您尝试访问某些 WCF Web 服务(在 iisreset 之后)失败,原因是to object 在内存中占用了一些空间,并且您收到 Service Unavailable 错误,因为 appPool 无法启动。

解决方法:

使用以下命令创建批处理文件


n


在之前的支持角色中,我管理了几台运行各种 .NET 混乱的 IIS 服务器。当 AppPool 无法启动时,通常是登录凭据错误。


n