0
我用下面的方法來加密在我的web.config連接字符串運行:加密的連接字符串失敗時從服務器
public static void EncryptConnectionString()
{
var section = GetConfigSection();
if (section.SectionInformation.IsProtected) return;
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
section.SectionInformation.ForceSave = true;
section.CurrentConfiguration.Save();
}
private static ConnectionStringsSection GetConfigSection()
{
var config = WebConfigurationManager.OpenWebConfiguration("~");
var section = config.GetSection("connectionStrings");
if (section.ElementInformation.IsLocked || section.SectionInformation.IsLocked) return null;
return section as ConnectionStringsSection;
}
- 我放在調用此方法Global.asax的
Application_Start()
方法 - 在本地運行時,該方法起作用,我可以看到連接字符串變爲加密。
- 從服務器運行時,該方法不起作用。我運行該應用程序,並且服務器連接字符串上的web.config保持未加密狀態。
- 在別處手動調用該方法似乎會導致它的工作。如果我從應用程序的HomeController調用它,我可以看到連接字符串已被加密。
- Global.asax的其他方法
Application_Start()
似乎可以正常工作,因爲我可以看到正在使用的已註冊捆綁包。
那麼爲什麼不調用這個方法,編輯web.config,從Application_Start()
調用時工作?