如何加密web.config文件的elmah部分,以便SMTP服务器&登录信息受到保护吗?
我已经学会了如何加密连接字符串,appSettings和其他部分;使用代码或aspnet_regiis.exe。
但是,当我尝试加密该部分时,它会告诉我找不到该部分。
有加密技巧吗?
谢谢, + M
答案 0 :(得分:1)
以上信息是正确的(您需要定位elmah组的“errorMail”或特定子部分)。但是,解决方案的代码多于所需的代码......
这是一个使用“elmah / errorMail”的清洁解决方案。解决方案:
string section = "elmah/errorMail";
Configuration config = WebConfigurationManager.OpenWebConfiguration(HttpRuntime.AppDomainAppVirtualPath);
// Let's work with the section
ConfigurationSection configsection = config.GetSection(section);
if (configsection != null)
// Only encrypt the section if it is not already protected
if (!configsection.SectionInformation.IsProtected)
{
// Encrypt the <connectionStrings> section using the
// DataProtectionConfigurationProvider provider
configsection.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
config.Save();
}
答案 1 :(得分:0)
我尝试使用aspnet_regiis但是在指定节路径时遇到了问题。切换到基于代码的方法,我列举了部分&amp;据悉有SectionGroups,只有Sections可以加密,而Elmah是一个SectionGroup,所以我需要加密elmah SectionGroup下的errorMail部分。我比昨天知道的多一点。
这是片段,如果它对下线的其他人有用,来自global.asax.cs:
private static void ToggleWebEncrypt(bool Encrypt)
{
// Open the Web.config file.
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
//.... (protect connection strings, etc)
ConfigurationSectionGroup gpElmah = config.GetSectionGroup("elmah");
if (gpElmah != null)
{
ConfigurationSection csElmah = gpElmah.Sections.Get("errorMail");
ProtectSection(encrypted, csElmah);
}
//.... other stuff
config.Save();
}
private static void ProtectSection(bool encrypted, ConfigurationSection sec)
{
if (sec == null)
return;
if (sec.SectionInformation.IsProtected && !encrypted)
sec.SectionInformation.UnprotectSection();
if (!sec.SectionInformation.IsProtected && encrypted)
sec.SectionInformation.ProtectSection("CustomProvider");
}