【发布时间】:2019-05-27 00:58:31
【问题描述】:
我是 .Net Core 的新手,并试图从 appsettings.json 文件中获取值,但我错过了一些非常基本的东西。请让我知道我做错了什么......
这是代码...
Program.cs
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.SetBasePath(Directory.GetCurrentDirectory());
})
Startup.cs
public IConfiguration Configuration { get; private set; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
services.Configure<EmailSettings>(Configuration.GetSection("EmailSettings"));
}
Web API 控制器
private readonly IConfiguration config;
public EmailController(IConfiguration configuration)
{
if (configuration != null)
{
config = configuration;
}
}
动作方法
var emailTemplatesRelativePath = config.GetSection("EmailSettings");
var email = config.GetValue<string>("Email");
以上两行都为GetSection 和GetValue 返回空值
appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Trace",
"Microsoft": "Information"
}
},
"ConnectionStrings": {
"FCRContext": "server=xxx;database=xxx;user id=xxx;password=xxx"
},
"AllowedHosts": "*",
"EmailSettings": {
"EmailTemplatesPath": "EmailTemplates"
},
"Email": "aa@aa.com"
}
【问题讨论】:
-
你通常在
Startup.cs中初始化IConfiguration;不在Program.cs。如果您按照您描述的方式获得 null,则说明那里有问题。请显示Startup.cs -
docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/… 我正在关注这个。我也尝试了 Options Pattern,但是没有用...
-
.Net Core 2.2 并暂时使用 IIS Express..
标签: c# .net asp.net-core .net-core asp.net-core-webapi