[.NET]快速存取web.config(或app.config)中的appsettings

  • 2934
  • 0
  • 2016-06-08

摘要:[.NET]快速存取web.config(或app.config)中的appsettings

開始介紹之前,首先要講重要注意事項是:設定檔都放在web.config or app.config裡面,這些檔案的appsettings如果哪天改了設定,程式碼一定要重新編譯喔

不然.dll or .exe是會用舊的設定去跑喔~更嚴重的是,如果是wcf服務,甚至會變成無法呼叫來使用喔

1.第一個方法是利用元件的方式,在本機測試時,修改參數方便,而且如果方案裡面有多個專案,參數還能跨專案存取。

於nuget安裝vici core

 

在web.config or app.config加入你要的設定valu

<appSettings>
    <add key="UserName" value="abc"/>
    <add key="UserId"  value="cde"/>
    <add key="UnitName" value="efg"/>
    <add key="UnitId" value="hij"/>
  </appSettings>

並加入對應的類別檔案Config.cs,以供程式碼快速取用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyProject
{
    public class Config
    {
        public static string UserName;

        public static string UserId;

        public static string UnitName;

        public static string UnitId;
    }
}

程式碼中,要引用的話,先加入using

using Vici.Core.Config;

並執行下列指令初始化(通常放在constructor)

ConfigManager configManager = new ConfigManager();
configManager.RegisterProvider(new ConfigurationProviderAppConfig());
configManager.Register<Config>();
configManager.Update();

然後就可以快速跨專案使用appsettings設定囉

string aaa = Config.UserName;

2.第二個方法是:利用System.Configuration.ConfigurationManager.AppSettings取得web.config(or app.config)的appsettings的value,這樣就OK囉,只是不能跨專案存取,記得加入using System.Configureation才能用

using System.Configuration;
string value = System.Configuration.ConfigurationManager.AppSettings["myFirstKey"];

提供一個簡易的範例方便直接複製使用:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
namespace MyProjectNameSpace
{
    public class Config
    {
        public static string EstimatedTargetCount = GetAppSettings("EstimatedTargetCount");
        public static string StartTime = GetAppSettings("StartTime");
        public static string EndTime = GetAppSettings("EndTime");
        public static string OnceGroupCount = GetAppSettings("OnceGroupCount");
        public static string SleepTime = GetAppSettings("SleepTime");
        public static string ServerName = GetAppSettings("ServerName");
                       
        private static string GetAppSettings(string key)
        {
            return System.Configuration.ConfigurationManager.AppSettings[key];
        }
    }

    
}

呼叫方式:

int groupCount = Convert.ToInt32(Config.OnceGroupCount);
int sleepTime = Convert.ToInt32(Config.SleepTime);

參考資料:

AppSettings get value from .config file

http://stackoverflow.com/questions/10766654/appsettings-get-value-from-config-file