iisreset后应用程序池无法启动

10

在开始之前,我知道使用iisreset被认为是不好的实践,但这本来就不应该发生。

我们拥有:

  • 几台安装了Windows Server 2003 R2的IIS6机器(64位和32位)

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

出现了什么情况:

  • 所有应用程序池都已启动,所有服务都可以正常运行
  • 执行了IISReset(或重新启动机器)
  • IIS重新启动,但不是所有应用程序池都能正常启动。有时它们全部重新启动,但有时一个或多个池无法启动。但是它们可以手动启动。

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

6个回答

11

应用程序池应该在iisreset时重新启动,但它们在COM+中运行以提高可靠性。这意味着如果应用程序行为不当,它们可能不会重新启动,但IIS和其他应用程序将(应该)重新启动。因此,这是“正常”的。

P.S. 我也想自豪地“OUT”自己是iisreset的用户。坏习惯?呸! ;D


请问一下,iisreset是什么意思?在Program Files文件夹里有没有相关的.exe文件? - Kellen Stuart
搞定了。打开 Powershell 或 CMD 并运行 iisreset.exe - Kellen Stuart

5

IIS不会立即启动ASP.NET工作进程(w3wp.exe),直到第一个请求到来。当你说“未启动”时,是指在尝试访问某些WCF Web服务(在iisreset之后),你遇到了“服务不可用”错误,因为应用程序池无法启动吗?您是否在事件日志中看到任何与IIS W3SVC相关的条目?

如果有的话,它们可能能够为您提供一些提示,说明为什么无法启动;请将它们发布在这里。


我在inetmgr中的池子上看到了一个“服务不可用”的错误提示和一个红色的叉号,但我还没有查看事件日志的机会。 - thijs
通常情况下,这会伴随着事件日志中的错误条目;去检查一下吧。 - icelava

4

原因:

IIS在没有收到第一个请求之前不会立即启动ASP.NET工作进程(w3wp.exe)。当它显示“未启动”时,这意味着您尝试访问一些WCF Web服务(在iisreset之后),由于对象占用了某些内存空间,因此失败,并且您会收到“服务不可用”错误,因为应用程序池无法启动。

解决方法:

创建包含以下命令的批处理文件并进行计划安排。

net stop 23svc

net stop msftpsvc

net stop smtpsvc

net stop PleskControlPanel

net stop HTTPFilter

iisreset /restart

net start w3svc

net start msftpsvc

net start smtpsvc

net start PleskControlPanel

net Start HTTPFilter


3

我遇到了类似的问题——在IIS重新启动后,DefaultAppPool停止了运行。

在应用程序事件日志中发现了一个错误:

Windows无法登陆您,因为无法加载您的个人资料。请检查您是否已连接到网络或者您的网络是否正常工作。如果问题仍然存在,请联系您的网络管理员。
详细信息 - 拒绝访问。

通过将高级设置选项加载用户配置文件设置为False,问题得以解决。

希望这个翻译对您有所帮助。


0
在之前的支持角色中,我管理了几个运行各种.NET混乱的IIS服务器。当应用程序池无法启动时,通常是由于错误的登录凭据。

-1

通过应用程序池的高级设置重新设置身份验证凭据对我有用。

之前我更改了我的活动目录密码,由于应用程序池已经在运行,所以一切正常,直到我执行IISRESET。


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