2010-10-03 111 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關於如何加密自定義部分。

相關問題