![](/img/trans.png)
[英]Read and use settings from appsettings.json without IOptions<T>?
[英]Can't read data from appsettings.json
我正在尝试从appsettings.json读取数据。
emailConfig
中的ApiController
始终为 null。 我尝试使用选项模式读取数据,但它不起作用。
控制器
private EmailConfiguration emailConfig;
public ApiController (IOptions<EmailConfiguration> _emailConfig) {
this.emailConfig=_emailConfig.Value;
}
appsettings.json
{
"ConnectionStrings": {
"DefaultConnection": "connectionstring here"
},
"EmailConfiguration": {
"SmtpServer": "smtp.zoho.com",
"SmtpPort": 587,
"SmtpUsername": "username.zoho.com",
"SmtpPassword": "password"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
}
将 appsettings.json 加载到配置中(Startup.cs)
Configuration = new ConfigurationBuilder ()
.SetBasePath (env.ContentRootPath)
.AddJsonFile ("appsettings.json", optional : true, reloadOnChange : true)
.AddJsonFile ($"appsettings.{env.EnvironmentName}.json", optional : true)
.AddEnvironmentVariables ()
.Build ();
Startup.cs // 配置服务()
services.Configure<EmailConfiguration>(Configuration);
services.AddSingleton<IEmailConfiguration> (Configuration.GetSection ("EmailConfiguration").Get<EmailConfiguration> ());
services.AddSingleton<IEmailConfiguration> (sp =>
sp.GetRequiredService<IOptions<EmailConfiguration>> ().Value
);
电子邮件配置文件
public class EmailConfiguration : IEmailConfiguration {
public EmailConfiguration(){
}
public string SmtpServer { get; set; }
public int SmtpPort { get; set; }
public string SmtpUsername { get; set; }
public string SmtpPassword { get; set; }
}
调用Configure
您需要指定部分以绑定设置文件的所需部分
services.Configure<EmailConfiguration>(Configuration.GetSection("EmailConfiguration"));
并且由于您现在已经注册了该选项,并且看起来您还想将其注册为单身人士,请考虑以下事项
services.AddSingleton<IEmailConfiguration> (sp =>
sp.GetRequiredService<IOptions<EmailConfiguration>>().Value
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.