2010-05-27 185 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