Here's the issue. When I build an asp.net application I create a singleton to read the values from the web.config file so that the values are only read once and gives a slight speed increase to the app. I basically do the following :
/// <summary>
/// Static class that handles the web.config reading.
/// </summary>
public class SiteGlobal
{
/// <summary>
/// Property that pulls the connectionstring value.
/// </summary>
public static string ConnectionString { get; protected set;}
/// <summary>
/// Property that pulls the directory configuration value.
/// </summary>
public static string Directory { get; protected set; }
/// <summary>
/// Static contructor for the SiteGlobal class.
/// </summary>
static SiteGlobal() {
ConnectionString = WebConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
Directory = WebConfigurationManager.AppSettings["Directory"];
}
}
Which I don't consider a bad optimization. (Suggestions for improvement are appreciated through.)
Now though I'm trying to read from a ConfigurationSection that can contain multiple area's for example :
<ApplicationArea>
<test1>
<add key="key value" value="value data"/>
</test1>
<test2>
<add key="key value1" value="value data2"/>
</test2>
</ApplicationArea>
Where I can have multiple area's underneath ApplicationArea, such as test1 and test 2 above. The best I've been able to come up with for an optimization of this though is this :
public static string ApplicationArea(string skey, string skey2)
{
NameValueCollection nvc = WebConfigurationManager.GetSection("ApplicationArea/" + skey) as NameValueCollection;
return nvc[skey2];
}
Which is not saving the data and rereads the web.config file every time it's accessed. Is there an easy way to optimize the reading of the sections?
WebConfigurationManager. What speed increases have you actually noticed? – Mr. Disappointment May 4 '11 at 19:01