繁体   English   中英

无法从 appsettings.json 读取数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM