17

我一直在运行 XP home 的旧机器上开发一个 ASP.NET 站点。我最近买了一台新的 Win 7 PC,并把我所有的项目文件都转移了。当我尝试运行该项目时,我收到以下错误消息:

"Failed to decrypt using provider 'MyRsaProtectedConfigurationProvider'. Error message from the provider: The RSA key container could not be opened."

我意识到我使用RSA encryption. 这就是现在的问题所在。我不确定如何让该密钥再次工作,以便我可以在我的新机器上使用它。我从旧机器导出密钥并使用以下命令导入:

aspnet_regiis -pi "RSAProviderName" "C:\RSA_configkey.xml"

这是成功导入的。然后我运行了该项目,但出现了相同的错误消息。我想这可能是一个许可的事情,所以我跑了:

aspnet_regiis -pa "RSAProviderName" "\Desktop" -full

这也成功了,但我仍然得到错误。通过阅读,我看到人们使用“ASPNET”而不是“\Desktop”(Desktop 是我的机器名称)。但是,当我尝试使用“ASPNET”时,我得到:

No mapping between account name and security IDs was done. <Exception from HRESULT = 0x80070534

在解决此问题之前,我无法从事该项目,因此非常感谢您的帮助。谢谢!

4

2 回答 2

28

如果您仍然可以访问旧机器,您可以随时解密该机器上的配置部分,然后将未加密的配置文件复制到新机器(如有必要,重新加密旧机器上的文件)。

在 Windows 7 上,默认情况下运行 IIS 应用程序池的帐户可能是ApplicationPoolIdentity(而不是ASPNET)。要授予权限,请尝试以下操作:

aspnet_regiis -pa RSAProviderName "IIS APPPOOL\DefaultAppPool" -full

顺便说一句,如果您决定坚持将密钥从旧机器复制到新机器,则应确保在导出时也导出私钥数据:

aspnet_regiis -px RSAProviderName C:\RSA_configkey.xml -pri

并且,可选地,在导入期间使关键数据可导出:

aspnet_regiis -pi RSAProviderName C:\RSA_configkey.xml -exp
于 2010-05-27T14:17:37.047 回答
3

我遇到了同样的问题,但是使用管理员运行命令提示符/powershell 解决了这个问题。

于 2019-12-03T10:52:19.313 回答