如何在.Net Core中将App.config更改为json配置文件

时间:2016-07-27 13:53:38

标签: asp.net-core asp.net-core-mvc .net-core asp.net-core-1.0 .net-core-rc2

我的项目使用App.config来读取配置属性。例: ConfigurationManager.AppSettings["MaxThreads"] 你知道我可以用来从json读取配置的库吗?感谢。

1 个答案:

答案 0 :(得分:15)

ASP.NET Core中通常不提供ConfigurationManager静态类。相反,您应该使用新的ConfigurationBuilder系统和强类型配置。

例如,默认情况下,使用类似于以下内容的内容在Startup类中构建配置:

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables();
    Configuration = builder.Build();
}

这将从appsettings.json文件加载配置,并将密钥附加到配置根目录。如果您有以下appsettings文件:

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
    "Default": "Debug",
    "System": "Information",
    "Microsoft": "Information"
    }
  },
  "ThreadSettings" : {
     "MaxThreads" : 4
  }
}

然后,您可以创建类似于以下内容的强类型ThreadSettings类:

public class ThreadSettings
{
    public int MaxThreads {get; set;}
}

最后,您可以通过向Configure方法添加ConfigureServices方法,将此强类型设置类绑定到您的配置。

using Microsoft.Extensions.Configuration;
public void ConfigureServices(IServiceCollection services)
{
    services.Configure<ThreadSettings>(Configuration.GetSection("ThreadSettings"));
}

然后,您可以通过将其注入构造函数来从任何其他位置注入和访问您的设置类。例如:

public class MyFatController
{
    private readonly int _maxThreads;
    public MyFatController(ThreadSettings settings)
    {
        maxThreads = settings.MaxThreads;
    }
}

最后,如果您确实需要访问基础配置,您还可以在ConfigureServices中注入该配置,以使其在您的课程中可用。

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton(Configuration);
}

您可以在docsvarious blogs上了解有关配置的更多信息