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

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


    
    
    
    
  

并加入对应的类文件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();
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