[C#] Hur läsa egendesignad och krypterad sektion i app.config? Blir galen...
Jag sitter och programmerar ett skrivbordsprogram där jag sparar lite saker i min app.config för projektet. Det är bland annat anslutningssträngar till databaser, men även några mycket viktiga SHA512-hashsummor samt deras respektive salt.
Anslutningssträngarna till databaserna lyckades jag kryptera lätt (sectionName är naturligtvis lika med connectionStrings i det här fallet):
ConfigurationSection section = config.GetSection(sectionName);
if (!section.SectionInformation.IsProtected)
{
if (!section.IsReadOnly())
{
section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
section.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Modified);
}
}
När det senare kom till min egen sektion, gick det också bra. Såhär ser den aktuella delen av app.config ut:
<configSections>
<sectionGroup name="myTestSection">
<section name="test" type="System.Configuration.DictionarySectionHandler"/>
</sectionGroup>
</configSections>
<myTestSection>
<test>
<add key="hash" value="<hash>"/>
<add key="salt" value="<salt>"/>
</test>
</myTestSection>
Öppnar jag min app.config så ser jag att både connectionStrings- och testsektionen är krypterade.
Nu kommer problemet...
När jag läser in mina anslutningssträngar fungerar det galant. Om jag försöker läsa in något från testsektionen däremot, så får jag ett fel: "Unrecognized attribute 'configProtectionProvider'. Note that attribute names are case-sensitive."
Såhär försöker jag läsa innehållet i testsektionen:
Hashtable settings = ConfigurationManager.GetSection("myTestSection/test") as Hashtable;
Om jag går till raden som undantaget nämner så hamnar jag på:
<test configProtectionProvider="RsaProtectedConfigurationProvider">
Jag har ta mig *** suttit och försökt allt möjligt de senaste två timmarna. Vad har jag missat?
Ett alternativ till den metod jag försöker mig på nu (kryptera egendesignad sektion) vore om jag på något sätt endast kunde kryptera vissa delar av appSettings som följer med .NET. Jag har tyvärr endast listat ut hur man krypterar sektioner (det är därför jag skapar en egen), men om någon vet hur jag krypterar enskilda medlemmar i en sektion så går det nog också bra.
Tack.