.net core - 配置

时间 2018/3/29 22:44:41 加载中...

配置


配置是程序中经常用到的一个东西,一般用的都是配置文件。

再 asp.net mvc 中,经常用到 web.config 文件,有时候,也会把配置写在 json 文件中。


在 .net core 中,新增了一些类,专门来读取配置文件的。


先安装包:microsoft.aspnetcore

然后引入命名空间: Microsoft.Extensions.Configuration


通过 ConfigurationBuilder 类来加载配置,然后再输出,

他可以加载的配置有:


1、键值对的

2、字符串数组(比如命令行参数 args)

3、Json文件


ConfigurationBuilder 的配置,以最后一个有值为准。


核心代码示例:


JSON文件:
{
  "DoorSiteUrl": "2",
  "OASiteUrl": "1",
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=(localdb)\\MSSQLLocalDB;Database=_CHANGE_ME;Trusted_Connection=True;"
    }
  }
}

//加载配置
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.AddInMemoryCollection(defaultConfig);//这是一个字典类型的键值对
builder.AddJsonFile("Sites.json");
builder.AddCommandLine(cmdArgs); //这是一个string数组

//生成
IConfigurationRoot config = builder.Build();

//读取配置
config["DoorSiteUrl"]
config["OASiteUrl"]
config["Data:DefaultConnection:ConnectionString"]

//读取配置-直接生成对象
UrlModel model = new UrlModel();
config.Bind(model);


完整代码示例:


using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;

namespace ConfigConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] cmdArgs = new string[] { "DoorSiteUrl=http://twww.sqber.com", "OASiteUrl=http://toa.sqber.com" };

            UrlModel urlModel = GetUrlModel(new string[] { });
            Console.WriteLine(urlModel.ToString());

            urlModel = GetUrlModel(cmdArgs);
            Console.WriteLine(urlModel.ToString());

            Console.WriteLine("Hello World!");
        }

        static UrlModel GetUrlModel(string[] cmdArgs)
        {
            Dictionary<string, string> defaultConfig = new Dictionary<string, string>()
            {
                {"DoorSiteUrl","http://www.sqber.com" },
                {"OASiteUrl","http://oa.sqber.com" },
            };

            ConfigurationBuilder builder = new ConfigurationBuilder();
            builder.AddInMemoryCollection(defaultConfig);
            builder.AddJsonFile("Sites.json");
            builder.AddCommandLine(cmdArgs);            

            //ConfigurationBuilder 的配置,以最后一个有值为准

            IConfigurationRoot config = builder.Build();

            UrlModel model = new UrlModel();
            config.Bind(model);

            return model;
            //return new UrlModel
            //{
            //    DoorSiteUrl = config["DoorSiteUrl"],
            //    OASiteUrl = config["OASiteUrl"]
            //};
        }
    }

    public class UrlModel
    {
        public string DoorSiteUrl { get; set; }
        public string OASiteUrl { get; set; }

        public override string ToString()
        {
            return $"doorSiteUrl:{DoorSiteUrl},OASiteUrl:{OASiteUrl}";
        }
    }
}


控制台运行


控制台并没有生成exe文件,执行需要使用下面命令:


dotnet ConfigConsole.dll


或写个bat文件


start dotnet ConfigConsole.dll

扫码分享
版权说明
作者:SQBER
文章来源:http://blog.sqber.com/articles/aspnet-core-configuration.html
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。