我一直在运行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
加密了部分web.config文件。这就是现在问题所在。我不确定如何再次使用该键,以便我可以在我的新机器上使用它。我从旧机器导出密钥并使用以下方法导入:
aspnet_regiis -pi "RSAProviderName" "C:\RSA_configkey.xml"
这是成功导入的。然后我运行了该项目,但出现了相同的错误消息。我认为这可能是一个许可的事情,所以我跑了:
aspnet_regiis -pa "RSAProviderName" "\Desktop" -full
这也很成功,但我仍然得到错误。从阅读,我看到人们使用“ASPNET”而不是“\桌面”(桌面是我的机器名称)。但是,当我尝试使用“ASPNET”时,我得到:
No mapping between account name and security IDs was done. <Exception from HRESULT = 0x80070534
在修复此项目之前,我无法继续工作,因此非常感谢任何帮助。 谢谢!
答案 0 :(得分: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
答案 1 :(得分:0)
我遇到了同样的问题,但是使用管理员运行命令提示符/ powershell解决了该问题。