浏览IIS网站时出现“服务不可用”错误

7
我在IIS 6.0中有一个使用自定义服务帐户的应用程序池的网站。当我浏览该网站时,出现错误“服务不可用”,事件日志中的错误信息如下:
应用程序池'SampleAppPool'的身份无效,因此万维网发布服务无法创建工作进程来服务应用程序池。因此,应用程序池已被禁用。
根据this article,我认为可以使用实用程序“Aspnet_regiis”授予帐户对IIS元数据的访问权限,但这是否是解决此问题的正确方法?因为此实用程序用于多个功能,可能不仅授予权限给帐户,还可能执行其他操作,或者我应该手动将帐户添加到“IIS_WPG”组中?
4个回答

12

当我在IIS 6中看到这个问题,并且用户有自定义的应用程序池标识时,问题通常源于在应用程序池属性中输入凭据。因此,通常存在两个问题来源。

一个是凭证中的简单拼写错误,不幸的是,在IIS 6中表单验证不是很好,因此我经常让用户更改应用程序池的标识,然后立即检查凭证是否“生效”,或者检查系统事件日志以获取W3SVC和相关错误。

我在这种情况下看到的第二个具体原因是,人们输入活动目录用户时,有时会忘记添加域名。(例如DOMAIN\Username)。这导致我提出了下一个观点,即IIS_WPG是内置的本地组,授予成员运行作为应用程序池标识所需的ACL。aspnet_regiis.exe -ga向用户授予相同的权限,但在我看来,它最适合在IIS_WPG组不可用时使用。此外,专用的应用程序池用户帐户通常是一个好主意。如果AD用户密码更改,直到再次在IIS管理器中重新输入凭据之前,您的应用程序将无法运行。

编辑:我增加了一些段落以使这个块更易读。


谢谢。这是一个内部网站,使用Windows身份验证,应用程序池标识不是某个用户账户,而是专门为该应用程序设置的AD服务账户。密码是正确的。除了aspnet_regiis之外,我不清楚您提出的解决方案。在这种情况下,实用工具似乎能够解决问题,但我不确定是否应该在自定义帐户而不是默认网络服务帐户时运行此实用程序,而且在生产环境中运行此实用程序是否安全。 - RKP
如果您想要用于应用程序池的帐户是Active Directory用户,那么我建议使用aspnet_regiis.exe -ga DOMAIN\USERNAME来授予权限。如果您使用的是本地用户,则更容易将用户添加到组中。 IIS_WPG组有时会出现问题,如果Web服务器是DC(在这种情况下没有本地组,并且Network Service和其他内置组无法正常工作),或者由于某些其他原因,内置组IIS_WPG不是一个合适的选项。根据我的经验,该实用程序在生产环境中运行是“安全”的。 - unhappyCrackers1
网络服务帐户是一个最低特权的内置帐户。安全的方法是为应用程序池创建自定义用户,但这通常仅在进程间身份验证时需要。这意味着某些应用程序不需要自定义应用程序池标识。顺便说一句,在演示或测试环境中提升网络服务是一种不安全的方法,当快速配置是首要任务时,这是一个好方法。 - unhappyCrackers1
进程间身份验证可能是一个不太合适的词汇选择,但我的具体意思是像写入文件系统这样的任务通常需要比内置的网络服务帐户拥有更多的权限,因此,应该考虑使用自定义应用程序池方法。以下是一个非常信息丰富的链接,可以了解IIS6和ASP.NET的内部工作原理:http://dotnetslackers.com/articles/iis/ASPNETInternalsIISAndTheProcessModel.aspx - unhappyCrackers1
是的,我们需要一个定制账户来从应用程序读取数据并写入数据库以及文件系统,网络服务账户将没有这些特权,几乎每个应用程序都需要某种形式的数据访问,所以不确定何时网络服务账户会有用。感谢您的评论。 - RKP
还要检查网站是否关联了正确的asp.net版本。 - JohnLBevan

2

我曾经遇到过同样的问题,最终通过启动应用程序池解决了这个问题。即使IIS正在运行,我们的应用程序池也已经停止。


1

“应用程序池'SampleAppPool'的身份验证无效…”

每次出现此错误,都是因为在应用程序池中未正确输入用户名和密码。当您从另一台服务器导入池设置时,也会发生这种情况。重新输入应用程序池身份验证配置中的密码始终可以解决问题。

一旦您解决了这个问题,您可能会遇到您所描述的第二个问题,但那是一个不相关的问题。它可以像您描述的那样进行修复,或者手动授予应用程序池身份所需的访问权限。


0
如果你使用一个或多个远程访问工具连接到远程计算机,请注意:你的键盘映射可能会在某个地方出现问题!在我的情况下,我尝试在远程计算机上的纯文本编辑器中打出密码的某些字母(不一定按顺序,以保持安全性)。当我尝试输入美元符号时,我发现如果我使用左 Shift 键,我会得到"$",但如果我使用右 Shift 键,我会得到"4"。一旦我搞清楚了这一点,我就可以输入适用程序池标识的正确密码。(注意:在填写身份部分时,IIS 不会验证你输入的密码与用户身份是否匹配,只验证你输入的两个密码是否相匹配)。

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