Storing values in the web.config - appSettings or configSection - which is more efficient?
appsettings, asp.net, configsection, performance, web-config
Solution
For more complex configuration setup, I would use a custom configuration section that clearly defines the roles of each section for example
<appMonitoring enabled="true" smtpServer="xxx">
<alertRecipients>
<add name="me" email="me@me.com"/>
</alertRecipient>
</appMonitoring>
In your configuration class you can expose your properties with something like
public class MonitoringConfig : ConfigurationSection
{
[ConfigurationProperty("smtp", IsRequired = true)]
public string Smtp
{
get { return this["smtp"] as string; }
}
public static MonitoringConfig GetConfig()
{
return ConfigurationManager.GetSection("appMonitoring") as MonitoringConfig
}
}
You can then access configuration properties in the following way from your code
string smtp = MonitoringConfig.GetConfig().Smtp;
Problem
I'm writing a page that can use a couple of different themes, and I'm going to store some information about each theme in the web.config. Is it more efficient to create a new sectionGroup and store everything together, or just put everything in appSettings? configSection solution ``` <configSections> <sectionGroup name="SchedulerPage"> <section name="Providers" type="System.Configuration.NameValueSectionHandler"/> <section name="Themes" type="System.Configuration.NameValueSectionHandler"/> </sectionGroup> </configSections> <SchedulerPage> <Themes> <add key="PI" value="PISchedulerForm"/> <add key="UB" value="UBSchedulerForm"/> </Themes> </SchedulerPage> ``` To access values in the configSection, I am using this code: ``` NameValueCollection themes = ConfigurationManager.GetSection("SchedulerPage/Themes") as NameValueCollection; String SchedulerTheme = themes["UB"]; ``` appSettings solution ``` <appSettings> <add key="PITheme" value="PISchedulerForm"/> <add key="UBTheme" value="UBSchedulerForm"/> </appSettings> ``` To access values in appSettings, I am using this code ``` String SchedulerTheme = ConfigurationManager.AppSettings["UBSchedulerForm"].ToString(); ```