2010-10-03 106 views
2

我想加密web.config文件中的自定义节。
当我到达调用ProtectSection()的那一行时,我收到一个异常,说没有找到提供程序。加密web.config时找不到提供者

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

我试着用RSA以及得到同样的错误。
运行aspnet_regiis.exe的作品,但我需要以编程方式做到这一点。我错过了什么?

谢谢。

回答

1

如果您正在尝试将Windows Data Protection Provider传递给ProtectSetion的参数说明为"DpapiProtectedConfigurationProvider"

对于RSA应该"RsaProtectedConfigurationProvider"这是默认的选项参访

+0

我给了这个尝试,但仍然有同样的错误: 无法加密MySection。未找到保护提供程序'DpapiProtectedConfigurationProvider'。 无法加密MySection。未找到保护提供程序'RsaProtectedConfigurationProvider'。 – user464931 2010-10-04 13:22:10

+1

不,它不应该被称为“DpapiProtectedConfigurationProvider” - 它可能是提供者,但它不是您用于该提供者的字符串。 MSN:*“一个名为'DataProtectionConfigurationProvider'的DPAPIProtectedConfigurationProvider实例。”* – bgmCoder 2013-04-18 19:10:25

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关于如何加密自定义部分。

相关问题