【问题标题】:ASP.Net error: "The identity of application pool is invalid"ASP.Net 错误:“应用程序池的标识无效”
【发布时间】:2010-10-26 04:47:27
【问题描述】:

我的 ASP.Net Web 服务无法运行,因为应用程序池由于遇到身份危机而无法启动。

我在应用程序池中使用的用户是域用户,它是本地管理员,它在 IIS_WPG 中,我已经给它“作为操作系统权限的一部分” - 什么都没有。纳达。每次启动应用程序池都失败。

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

我尝试过的事情:

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

附言 如果我使用网络服务用户,一切正常 - 只是我的“自定义”用户失败了。使用此用户(交互)登录是有效的。

编辑:

解决方案如the accepted answer中所述(将“作为服务登录”权限添加到应用程序池的身份用户)。

我将添加一些在尝试向域用户添加“作为服务登录”权限时遇到以下消息的用户,以供将来参考:

"此设置不兼容 运行 Windows 2000 服务的计算机 包 1 或更早版本...."

要知道,这与 Windows 2000 无关,只是域的组策略阻止您将此权限分配给用户。

【问题讨论】:

  • 事件日志报告的具体内容是什么?
  • Assaf - 如果您要创建自定义帐户以用作应用程序池身份,则需要使用 aspnet_regiis -ga
  • Kev - 我试过了,但没有帮助
  • 我来到这里是因为我们今天重新启动了服务器,而这一切都开始突然发生了。我怀疑自上次重新启动以来域策略发生了变化。只是坐在外面,等待我们重新启动...... WHAM!这里的信息看起来非常有用,希望它能让我们再次前进。

标签: asp.net


【解决方案1】:

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

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

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

另外 - 确保帐户对支持网站/应用程序的文件系统具有“读取和执行”、“列出文件夹内容”和“读取”权限。

【讨论】:

  • 我尝试将登录设置为服务,但我无法做到。 MMC 管理单元说:“此设置与运行 Windows 2000 Service Pack 1 或更早版本的计算机不兼容......”当然,我运行的是 XP64 和 SP3。这是非常可疑的。可能是由于组策略阻止我更改此权限导致的错误消息吗?
  • 我没有看到那个消息;老实说,我不知道。
  • 宾果游戏。组策略阻止将此权限分配给我的用户。结果是上面的奇怪消息完全不直观。
  • 我遇到了这个问题,需要给用户“作为批处理作业登录”以及“作为服务登录”。在我的例子中,我通过将它们添加到 IIS_WPG 组中给出了“作为批处理作业登录”。
【解决方案2】:

尝试在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 文件夹中运行以下命令:

aspnet_regiis -ga <your_app_pool_user>

有关配置用户帐户以用作应用程序池身份的详细信息,请参阅以下文章:

How To: Create a Service Account for an ASP.NET 2.0 Application (MSDN)

【讨论】:

  • 如果您要创建自定义帐户以用作应用程序池标识,则无论如何都应该始终运行该命令。它设置了所有正确的用户权限分配、注册表权限、NTFS 权限等。
  • 这对我有用。可能应该注意从适当的框架版本文件夹中运行它......
  • 对我们来说,ApplicationPoolIdentity 帐户导致了问题。我运行了命令,然后得到了错误:An error has occurred: 0x000706fc The trust relationship between the primary domain and the trusted domain failed. 很想知道你是如何解决这个问题的......这很有趣,因为我认为这个帐户是本地帐户,而不是域帐户。
【解决方案3】:

确保有一个名为 c:\inetpub\temp\apppools 的文件夹。如果没有,请创建它。

【讨论】:

  • 没有这样的文件夹。创造了一个。仍然不起作用(无效的身份)。有没有额外的步骤?
【解决方案4】:

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

【讨论】:

    【解决方案5】:

    发生的情况是,您很可能在使用不同版本的 .NET 框架运行应用程序的池中运行您的应用程序。确保该池中的所有应用程序都运行相同的版本。如果这些应用必须在与此版本不同的版本下运行,请创建一个新池并将您的应用添加到其中。

    【讨论】:

    • 不,不是。这实际上不太可能是原因,因为事件日志中关于身份问题的警告发生在我什至尝试查看网页之前(从而加载 DLL..)
    【解决方案6】:

    我知道这很简单,但是您检查过密码是否正确吗?

    【讨论】:

    • 是的,我已经重置并重试了。甚至尝试使用 runas 运行 calc ..(有效)
    【解决方案7】:

    以前遇到过这个问题,但无法追踪我同情的原因!一些可能有帮助的建议:

    • 检查密码是否正确(不得不说对不起)
    • 使用没有其他网站在其中运行的新应用程序池
    • 确保您已运行 aspnet_regiis -ga 以设置所需的权限

    如果一切都失败了: - 停止应用并删除应用池 - 删除用户 - 重新创建用户 - 运行 aspnet_regiis -ga - 设置在此用户下运行的新应用程序池 - 在此池下运行站点 除了复制和粘贴我使用的复杂密码之外,这对我有用!

    【讨论】:

    • 我已经完成了所有这些,除了删除用户(这是一个域用户,在许多其他机器上工作正常,所以我不打算删除它)。
    【解决方案8】:

    您是否有将帐户从 iis_wpg 组中拉出的组策略?当出于某种原因需要在自定义帐户下运行工作进程或服务时,我们经常会遇到此(或类似)问题。

    【讨论】:

      【解决方案9】:

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

      【讨论】:

        【解决方案10】:

        如果您有 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 机器...

        【讨论】:

          【解决方案11】:

          遵循所有其他建议后:

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

          记得重启 IIS 管理服务!

          【讨论】:

            【解决方案12】:

            另一个值得一提的小事可能是,如果它是由管理员创建的新用户帐户,则可能会应用默认策略,例如“在首次登录时更改密码”。如果是这种情况并且该登录尚未发生,这也将有效地阻止用户帐户运行您的服务。

            这不适用于 OP 的案例,因为他提到他可以使用该帐户以交互方式登录,但我今天遇到了这个问题,其他人也可能这样做。

            【讨论】:

              【解决方案13】:

              在我的情况下,问题是我试图使用域帐户,而域控制器与我的机器有问题。我刚刚使用较新版本的 Windows (Windows 10) 创建了一个新 VM,并要求域管理员将其添加到域中,但我保留了与其他计算机上相同的主机名。

              此外,在事件查看器中,我发现了有关域控制器等的错误消息,这给了我一个线索。

              我不得不将机器从域中删除并重新添加,问题就解决了。

              【讨论】:

                【解决方案14】:

                发布一个简单的完整答案,因为我遇到了同样的错误,但为我解决的问题是在设置身份时将域包含在用户名中。该用户是有效的域用户和服务器的用户,我手动将其添加到 IIS_ 组,但在我尝试将域添加为前缀之前没有骰子,例如“我们\svc-myAccount”。

                【讨论】:

                  【解决方案15】:

                  在尝试了以上所有方法后,我注意到事件日志错误中的事件数据为 80070700。谷歌搜索此错误产生“尝试登录,但未启动网络登录服务。”

                  我发现 NetLogon 服务没有启动,启动它然后宾果游戏——它突然出现了。希望有一天这对其他人有所帮助

                  【讨论】:

                    【解决方案16】:

                    我也遇到了同样的问题,并与之抗争了很长一段时间。在尝试了许多不同的解决方案后,我卸载并重新安装了 IIS。重启服务器后,一切都修复了。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2011-10-08
                      • 1970-01-01
                      • 1970-01-01
                      • 2013-02-19
                      • 1970-01-01
                      • 1970-01-01
                      • 2013-04-09
                      相关资源
                      最近更新 更多