摘要:[.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