我的项目使用App.config来读取配置属性。例:
ConfigurationManager.AppSettings["MaxThreads"]
你知道我可以用来从json读取配置的库吗?感谢。
答案 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);
}