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

Ser*_*hur 5 asp.net-core-mvc .net-core asp.net-core asp.net-core-1.0 .net-core-rc2

我的项目使用App.config来读取配置属性.示例: ConfigurationManager.AppSettings["MaxThreads"] 您是否知道我可以使用从json读取配置的库.谢谢.

Soc*_*ock 16

ConfigurationManager静态类是不是在ASP.NET核心全面上市.相反,您应该使用新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();
}
Run Code Online (Sandbox Code Playgroud)

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

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
    "Default": "Debug",
    "System": "Information",
    "Microsoft": "Information"
    }
  },
  "ThreadSettings" : {
     "MaxThreads" : 4
  }
}
Run Code Online (Sandbox Code Playgroud)

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

public class ThreadSettings
{
    public int MaxThreads {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

public class MyFatController
{
    private readonly int _maxThreads;
    public MyFatController(ThreadSettings settings)
    {
        maxThreads = settings.MaxThreads;
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,如果您确实需要访问底层配置,您还可以将其注入ConfigureServices以使其在您的类中可用.

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton(Configuration);
}
Run Code Online (Sandbox Code Playgroud)

您可以在文档各种 博客上阅读有关配置的更多信息