微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-core – 如何在.Net Core中将App.config更改为json配置文件

我的项目使用App.config来读取配置属性.例:

ConfigurationManager.AppSettings [ “MaxThreads”]

你知道我可以用来从json读取配置的库吗?谢谢.

解决方法

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": "@R_314_4045@ion","Microsoft": "@R_314_4045@ion"
    }
  },"ThreadSettings" : {
     "MaxThreads" : 4
  }
}

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

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

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

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上阅读有关配置的更多信息

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐