2010-05-27 157 views
14

我一直在开发运行XP家用的老式机器上的ASP.NET网站。我最近得到了一台新的Win 7个人电脑,并将所有项目文件移到了整个项目中当我尝试和运行项目,我得到这个错误信息:的RSA密钥容器不能打开

"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”而不是“\ Desktop”(桌面是我的机器名称)。然而,当我尝试使用“ASPNET”,我得到:

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

直到这是固定的,我不能在这个项目工作,所以任何的帮助深表感谢。 谢谢!

回答

27

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

在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 
+0

感谢您的帮助。我应该在下一个小时内访问旧的机器,所以会尝试这种方法。在附注中,重置我授予的权限(例如'\ desktop')的最佳方式是什么?不是太重要,因为我是机器的唯一用户,但可能会更好。 – keyboardP 2010-05-27 14:37:18

+1

谢谢,这解决了问题! – keyboardP 2010-05-27 14:51:31

+3

不客气。要撤消权限,可以使用'-pr'开关再次使用aspnet_regiis。另外,发现在'文件C:\用户\所有用户\微软\加密\ RSA \ MachineKeys'并通过Windows更改premissions。 – 2010-05-27 14:52:05