我已加密了webconfig文件的两个部分,一个名为connectionStrings,另一个名为userAccount,使用相同的Provider。
在我的代码中,connectionString部分被解密就没有任何问题但是当解密第二部分名为userAccounts时我得到一个错误。
以下是确切的错误消息:
使用提供程序'AqueductDevProvider'无法解密。来自提供程序的错误消息:无法打开RSA密钥容器。
非常感谢您的帮助。
由于
以下是网络配置文件中的代码
<configProtectedData>
<providers>
<add name="AqueductDevProvider"
type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,
processorArchitecture=MSIL"
keyContainerName="AqueductDevKeys"
useMachineContainer="true" />
</providers>
</configProtectedData>
<connectionStrings configProtectionProvider="AqueductDevProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue></CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue></CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
<userAccounts configProtectionProvider="AqueductDevProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue></CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue></CipherValue>
</CipherData>
</EncryptedData>
</userAccounts>
这就是我尝试访问UserAccounts部分
中的信息的方法System.Configuration.ConfigurationManager.AppSettings [ “AdminName”]; userAccounts中有一个名为AdminName的密钥,它是加密的
答案 0 :(得分:3)
我能够解决这个问题,显然当代码试图检索它在错误的用户帐户下运行的自定义部分时(当它尝试检索connectionStrings时它是不同的)。 在尝试访问自定义加密部分时,我使用以下代码查找我的代码运行的用户帐户。
<% Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);%>
结果是 NT AUTHORITY \ IUSR
在此之后我只需要在此目录下运行以下命令
c:\Windows\Microsoft.NET\Framework\v4.0.30319>
aspnet_regiis.exe -pa "AqueductDevKeys" "NT AUTHORITY\IUSR"