加密web.config时找不到提供程序

时间:2010-10-03 01:34:29

标签: c# asp.net encryption web-config

我正在尝试加密web.config文件中的自定义部分 当我到达调用ProtectSection()的行时,我得到一个异常,说找不到提供者。

Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);  
ConfigurationSection section = config.GetSection("MySection");  
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider"); 

我也尝试过RSA并得到同样的错误 运行aspnet_regiis.exe有效,但我需要以编程方式执行此操作。我错过了什么?

谢谢。

2 个答案:

答案 0 :(得分:2)

您使用`DataProtectionConfigurationProvider'是正确的。 (see here for the provider names - dpapi的提供商名称中没有 dpapi - 但rsa 的提供商),但是,您的问题是你不能在名为" MySection" 的部分上运行iisreg - 它必须是某些部分。

该消息的含义是没有提供者可用于该特定部分。

要测试您的代码,您可以使用"AppSettings""connectionStrings""system.net/mailSettings/smtp"进行测试。 - 所有这些都与aspnet_regiis.exe一起使用。

请参阅此other Stack Exchange thread,了解如何加密自定义栏目。

答案 1 :(得分:1)

如果您尝试向我们提供Windows数据保护提供程序,则传递给ProtectSetion的参数不应说"DpapiProtectedConfigurationProvider"

对于RSA,它应该是"RsaProtectedConfigurationProvider",这是默认和优先选项