Asp.net

無法打開 RSA 密鑰容器

  • December 3, 2019

我一直在執行 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

在解決此問題之前,我無法從事該項目,因此非常感謝您的幫助。謝謝!

如果您仍然可以訪問舊機器,您可以隨時解密該機器上的配置部分,然後將未加密的配置文件複製到新機器(如有必要,重新加密舊機器上的文件)。

在 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

引用自:https://stackoverflow.com/questions/2921589