ASP.Net错误:"应用程序池的身份无效"

42

我的 ASP.Net Web 服务无法运行,因为应用程序池由于身份认证问题而无法启动。

我正在应用程序池中使用的用户是域用户,它是本地管理员,它在 IIS_WPG 中,我已授予它"作为 OS 权限的一部分"——什么都没有。每次都无法启动应用程序池。

通常缺少的是将用户添加到 IIS_WPG,但我想还有其他问题。

我尝试过以下事项:

  • 将用户添加到 IIS_WPG
  • 将用户添加到本地管理员组并添加 "作为 os 的一部分" 权限。
  • aspnet_regiis -ga
  • 重新启动...
  • 检查密码
  • 重新创建应用程序池,并仅将我的应用程序分配给它

p.s. 如果我使用 Network Service 用户,则一切正常——只有我的"自定义"用户失败了。使用此用户进行交互式登录也可以工作。

编辑:

解决方案如 接受的答案 中所述(向应用程序池的身份验证用户添加"作为服务登录"权限)。

我会补充一下,供将来参考,对于那些在尝试向域用户添加"作为服务登录"权限时遇到以下消息的人:

"此设置与运行 Windows 2000 Service Pack 1 或更早版本的计算机不兼容...."

请知道,这与 Windows 2000 没有任何关系,只是域的组策略阻止您向用户分配此权限。


事件日志报告到底包含了什么信息? - AviD
1
Assaf - 如果您正在创建用作应用程序池身份的自定义帐户,则确实需要使用aspnet_regiis -ga <用户名>。 - Kev
Kev - 我尝试了,但没有帮助。 - Assaf Lavie
我在这里是因为今天我们重新启动了服务器,然后这种情况突然发生了。我怀疑自上次重启以来有域策略更改。就那样等着我们重新启动... 突然间!这里的信息看起来非常有用,希望它能让我们再次运行起来。 - Chris Thornton
16个回答

53

您是否已为该账户启用“作为服务登录”?

开始 -> 控制面板 -> 管理工具 -> 本地安全策略 -> 本地策略 -> 用户权限分配 -> 作为服务登录

(请确保您的账户直接或间接地在此列表中;还建议您设置:访问网络计算机,拒绝本地登录,批处理登录)

同时,请确保该账户对支持网站/应用程序的文件系统具有“读取和执行”,“列出文件夹内容”和“读取”访问权限。


7
我的问题是需要给用户授予“批处理登录”和“作为服务登录”的权限。我将用户添加到IIS_WPG组来授予他们“批处理登录”的权限。 - Rory
我还不得不给用户“作为批处理作业登录”的权限-我不明白的是,没有这个权限时它仍然正常工作,然后突然停止工作了。 - Andy Sinclair
太棒了。将我的应用程序池用户添加到“批处理登录”和“作为服务登录”的列表中对我有用。谢谢。 - Mike Gledhill
将用户帐户添加到IIS_WPG组中,如@Rory上面所述,解决了我的问题! - RugerSR9
我们之前也遇到过这个问题,这个答案解决了我们的问题。但是,还需要执行一个额外的步骤,即强制更新组策略。我们在MSDN页面上阅读到,当服务器在域上时就需要这样做。要执行此操作,请从提升权限的命令行运行“gpupdate /force”。 - JLo
显示剩余6条评论

22

1
如果您正在创建用作应用程序池标识的自定义帐户,则无论如何都应该运行该命令。它会设置所有正确的用户权限分配、注册表权限、NTFS权限等。 - Kev
1
这对我有用。不过可能需要注意在适当的框架版本文件夹中运行它... - CodeRedick
对我们来说,“ApplicationPoolIdentity”账户是导致问题的原因。我运行了命令,然后出现了错误:“发生错误:0x000706fc主域和信任域之间的信任关系失败。”很想知道你是如何修复这个问题的……因为我还以为这个账户是本地账户,而不是域账户,真有趣。 - vapcguy

1
请确保 c:\inetpub\temp\apppools 文件夹存在。如果不存在,请创建它。

没有这样的文件夹。创建了一个。仍然无法工作(身份无效)。是否还有其他步骤? - Assaf Lavie

1

请确保尝试访问应用程序池的用户帐户是AD中组的成员。


0
在我的情况下,问题在于我试图使用一个域账户,而域控制器对我的电脑存在问题。我刚刚创建了一个新的虚拟机,装有更新版本的Windows(Windows 10),并要求域管理员将其添加到域中,但我保留了与其他机器相同的主机名。
此外,在事件查看器中,我发现了有关域控制器等方面的错误消息,这给了我一些线索。
我不得不将机器从域中移除并重新添加,问题得到解决。

0

应用程序池用户帐户可能已被锁定。


0
发布一个简单的答案以便完整性,因为我遇到了相同的错误,但是对我有用的解决方法是在设置身份时包括用户名所属的域。该用户是有效的域用户和服务器用户,我手动将其添加到IIS_组中,但是直到我尝试添加域作为前缀(例如“us\svc-myAccount”)才成功。

0

尝试了以上所有方法但都无效后,我注意到事件日志错误中的事件数据是80070700。在谷歌上搜索这个错误时,得到的结果是:“尝试登录,但网络登录服务未启动。”

我发现NetLogon服务未启动,将其启动后,问题迎刃而解。希望这能在某一天对其他人有所帮助。


0

另一种情况是您拥有CGI脚本。默认情况下,CGI脚本作为访问网站的Windows用户运行。为了在特定帐户下运行CGI脚本,您需要进行额外的步骤:

IIS 7+

在inetmgr.exe中转到网站配置中的CGI部分。将模仿设置为false。

IIS 6

以管理员身份运行以下命令:

cd \inetpub\adminscripts
cscript.exe Adsutil.vbs SET W3Svc/CreateProcessAsUser false

下一步:让您的IT部门升级所有WS2003机器...

0

在遵循其他建议之后:

  1. 检查“作为服务登录”和“作为批处理作业登录”的权限
  2. 检查文件夹权限,例如c:\Windows\system32\inetsrv等
  3. 在Metabase Explorer中检查IIS_WPG组的权限

记得重新启动IIS管理服务!


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