【问题标题】:Keyset does not exist / Identity invalid密钥集不存在/身份无效
【发布时间】:2014-08-23 13:56:30
【问题描述】:

注意:我在这里发现了几个类似的问题,但已解决的问题对我不起作用。所以我想我会提出一个新问题。

我重新启动了我们的 server 2012 机器,它承载了我们新的 .net 应用程序。这样做之后,我开始收到 503 错误。经调查,这似乎是一个身份问题。

在继续深入之前,我应该声明这个帐户已经工作了几个月。我之前重启过,一切正常。

所以我在日志中收到了(很常见的)5059、5057 和 5021 错误。他们归结为:

应用程序池 SVFileUpload 的标识无效。为标识指定的用户名或密码可能不正确,或者用户可能没有批量登录权限。如果没有更正身份,当应用程序池收到第一个请求时,应用程序池将被禁用。如果批处理登录权限导致问题,则必须在授予权限后更改 IIS 配置存储中的标识,然后 Windows Process Activation Service (WAS) 才能重试登录。如果在处理应用程序池的第一个请求后身份仍然无效,则应用程序池将被禁用。数据字段包含错误号。

我以为我会确保密码和帐户正确,所以我进入应用程序池,选择身份-> 自定义并确保设置正确。我收到一个错误:

执行此操作时出错。详细信息:密钥集不存在(HRESULT 异常:0x80090016)

这对我来说很奇怪,所以我尝试将应用程序池设置为内置帐户,并且效果很好。每当我尝试设置为自定义帐户时,我都会收到此错误。此外,不会运行使用自定义帐户的应用程序池。

我搜索了一下,不确定哪个错误是我需要跟踪的错误。我试过了:

  • 通过aspnet_工具在命令行注册账号
  • 确保用户在 IIS_IUSRS 组中
  • 更改 C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 文件的权限
  • 添加全新用户并尝试为该用户帐户设置应用程序池

我在谷歌上尝试了其他一些随机的东西,但我不记得了。

这个错误对我来说没有意义,而且似乎是随机的。我需要帮助弄清楚 1) 为什么我不能将应用程序池设置为自定义帐户,以及 2) 为什么身份不再适用于我的应用程序

-编辑
我最近删除并重新添加了我一直在使用的用户帐户。我认为这可以解决这个问题。剩下的问题是由于“密钥集不存在”错误,我无法更新应用程序池。

【问题讨论】:

    标签: iis windows-server-2012


    【解决方案1】:

    我找到了几个链接,让我找到了解决方案。

    在 c:\windows\system32\inetsrv\config\applicationHost.config 我删除了所有 configProtectedData 条目。

    然后我删除了 %ALLUSERSPROFILE%\Microsoft\Crypto\RSA\MachineKeys 中的所有内容

    我从 inetsrv 目录运行 iissetup.exe /install SharedLibraries,结果显示“失败 = 0x80070005”

    然后我就可以设置我的应用程序池,就好像什么都没发生一样。

    更详细的解释请参见https://techcommunity.microsoft.com/t5/IIS-Support-Blog/Keyset-does-not-exist-exception-from-HRESULT-0x8009000D-or-or/ba-p/342955

    【讨论】:

    • 一开始我对这些步骤持怀疑态度,但在完成所有步骤后,这确实对我有用。
    • 不幸的是,这对我不起作用。但是我的情况有点不同。我也有 Windows 2012,但就我而言,我已经从工作组加入域。但是,我得到了与您相同的结果,出现 0x80090016 错误。按照上述说明(并重新启动 www 服务只是为了更好地衡量)后,我在尝试应用应用程序池设置时遇到不同的错误... 值不在预期范围内。
    • 所以我遇到了和你 ebol2000 一样的问题。我有这个“价值不在预期范围内”。每次我尝试应用应用程序池设置时。经过所有的试验和错误,我发现如果您设置自定义帐户并接受,直到您收到错误,我回到自定义帐户,单击“设置”然后取消它以不覆盖凭据。然后我单击“确定”,然后再次单击“确定”,它似乎工作。我又做了 4 次,每次都解决了。 (旁注,我什至匹配了我的用户名的大写,如果有帮助的话)
    • 按照此处的步骤操作后,我开始收到另一个错误...“值不在预期范围内” Stack Overflow 中有一个帖子:stackoverflow.com/questions/30088486/… 之后进行此操作有助于解决问题。服务器是 Windows 2012 R2。
    • @Dean Marsden - 哇!我跟着你的款待,它奏效了!!!!!!!这太奇怪了!您应该将其发布为答案。我只是浪费了 3 个小时才看到你的评论!
    【解决方案2】:

    我运行了 iisreset 命令并解决了我的问题

    【讨论】:

    • 这为我解决了这个问题,并使我免于按照其他引用的解决方案中的建议删除文件和注册表项。先试试这个!
    • 先试试这个!我建议您在删除文件之前这样做。它也可能对你有用。这对我来说很容易解决,但请确保您以管理员身份运行..
    【解决方案3】:

    我收到了同样的错误消息,因为我的用户不是“本地管理员”组的成员。

    我能够连接到服务器,因为我是“远程桌面用户”组的成员。

    我能够打开 IIS 管理并更改设置,但是当我单击“确定”或“保存”按钮时 - 我得到了“密钥集不存在” - 错误消息。

    所以我的建议 - 检查你是否是管理员。

    【讨论】:

    • 我也有过类似的经历。当我尝试进行自动部署(VSTS 发布)时,出现上述错误。在这种情况下,该命令由绑定到管理员帐户的盒子上的本地服务执行。当我 RDP 进入盒子并自己运行 AppCmd.exe 时,我也遇到了同样的错误。但是当我在 administrative 模式下打开命令提示符时,它工作正常。所以它看起来确实与安全相关,但不仅仅是作为管理员。
    • 我在使用 VSTS 版本时遇到了同样的情况。我让每个人都可以完全控制 MachineKeys,只是想看看这是否会有所作为。我的坏只是将 MachineKeys 文件夹的权限重置为所有人,它正在工作。
    • 我通过向我的用户添加一个新组来解决这个问题,我已登录到 Windows Server 2012。我的默认用户是管理员。所以我去了计算机管理->本地用户和组->用户。选定的管理员 -> 属性 -> IIS_IUSRS 组的成员并包括在内。
    【解决方案4】:

    我尝试在远程服务器上更改应用程序池的标识,但由于上述错误而失败。 我 RDP 进入远程机器,然后尝试使用本地 IIS 管理器更新身份,它成功了。

    【讨论】:

      【解决方案5】:

      对于在 Windows server 2008 上遇到此错误的任何人: 当您使用远程管理功能(“连接到另一台计算机”)从另一台服务器管理 IIS 实例时,可能会发生这种情况。

      我通过从服务器本身管理 IIS 实例来解决。 https://support.microsoft.com/en-hk/help/977754/-keyset-does-not-exist-error-message-when-you-try-to-change-the-identi

      【讨论】:

        【解决方案6】:

        由于我在新服务器上工作,我能够卸载 IIS Windows 功能,然后重新添加它。

        之后我可以毫无问题地更改应用程序池标识。

        【讨论】:

          【解决方案7】:

          删除此处找到的 rsa C:\Users\usernamn\AppData\Roaming\Microsoft\Crypto\RSA 进行备份以确保对我有用

          【讨论】:

          • 能否请您详细说明您的答案,添加更多关于您提供的解决方案的描述?
          猜你喜欢
          • 2020-06-20
          • 1970-01-01
          • 1970-01-01
          • 2021-12-17
          • 2017-11-13
          • 1970-01-01
          • 2022-06-19
          • 2020-11-16
          • 2023-03-20
          相关资源
          最近更新 更多