ایجاد کلاس Static برای خواندن تنظیمات web.config

چهارشنبه 7 مرداد 1394

در این مقاله، کلاس استاتیکی پیاده سازی خواهیم کرد که با کمک آن بتوانیم تنظیمات فایل web.config را بخوانیم.

متدهای این کلاس به شکل زیر پیاده سازی می شوند:

1. خواندن Connection Strings

public static string GetConnectionStringUsingConfigurationManager(string nameOfConnectionString)
{
    return System.Configuration.ConfigurationManager.ConnectionStrings[nameOfConnectionString].ToString();
}

public static string GetConnectionString(string nameOfConnectionString)
{
    //null indicates default web.config
    //you can set it to what ever config file in you need
    System.Configuration.Configuration config =
        System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(null);
    if (config.ConnectionStrings.ConnectionStrings.Count > 0)
    {
        var connString = config.ConnectionStrings.ConnectionStrings[nameOfConnectionString].ToString();
        return connString;
    }
    return "";
}

در کد بالا، دو راه برای خواندن Connection String از فایل web.config را داریم.

همچنین می توانیم متد GetConnectionStrinng را تغییر دهیم تا پارامتر دیگری به عنوان FilePath (مسیر فایل) برای استفاده از فایل Xmlای علاوه بر فایل پیش فرض web.config بگیرد.

2. خواندن AppSettings

public static string GetAppSettingUsingConfigurationManager(string customField)
{
    return System.Configuration.ConfigurationManager.AppSettings[customField];
}

public static string GetAppSetting(string customField)
{
    System.Configuration.Configuration config =
        System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(null);
    if (config.AppSettings.Settings.Count > 0)
    {
        var customSetting = config.AppSettings.Settings[customField].ToString();
        if (!string.IsNullOrEmpty(customSetting))
        {
            return customSetting;
        }
    }
    return null;
}

"AppSettings" یک عنصر کلید-مقدار (key-value) در web.config است که می توانیم تنظیمات دلخواه خود را در آن قرار دهیم.

مثالی برای "AppSettings":

<appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    <add key="DatabaseINILocation" value="C:\config\config.ini" />
    <add key="testPort" value="49610" />
</appSettings>

3. خواندن یک بخش (Section)

public static string ReadFieldFromSection(string sectionName, string field, string attribute)
{
    var section = (XmlElement)ConfigurationManager.GetSection(sectionName);
    if (section.GetElementsByTagName(field).Count > 0)
    {
        XmlElement element = (XmlElement) section.GetElementsByTagName(field).Item(0);
        var fieldValue = element.Attributes[attribute].Value;
        return fieldValue;
    }
    return null;
}

این قطعه کد بسیار وابسته به بخش(Section)هایی است که می خواهید بخوانید، بنابراین متناسب با آن، کد شما مقداری تغییر می کند.

مثالی از یک بخشی (Section) که شما می توانید با این کد بخوانید:

<log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="log/log.txt"/>
      <appendToFile value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %level %logger - %message%newline%exception"/>
      </layout>
    </appender>
  </log4net>

و درنهایت، می توانید این متدها را به شکل زیر در کد خود فراخوانی کنید.

ReadConfig.GetAppSetting("testPort");
ReadConfig.GetAppSettingUsingConfigurationManager("testPort");
ReadConfig.GetAppSettingUsingConfigurationManager("testPort");
ReadConfig.ReadFieldFromSection("log4net", "file", "value");
ReadConfig.GetConnectionString("TestDatabase");
ReadConfig.GetAppSettingUsingConfigurationManager("TestDatabase");

آموزش سی شارپ

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 2k بازدید
  • 3 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید