Я пытался использовать aspnet_regiis, но не смог указать путь к разделу. Переходя к подходу, основанному на коде, я перечислил разделы и узнал, что есть SectionGroups, что только Sections могут быть зашифрованы, и что Elmah является SectionGroup, поэтому мне нужно зашифровать раздел errorMail в elmah SectionGroup. Я знаю немного больше, чем вчера.
Это фрагмент, если он полезен кому-то еще в будущем, из 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");
}