加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

配置 – ASP.NET Core Expose配置到DI注入服务

发布时间:2020-12-15 22:26:55 所属栏目:asp.Net 来源:网络整理
导读:我有一个ASP.NET核心WebAPI项目,我正在尝试添加配置到我的IEmailServic,我通过DI注入这样: services.AddTransientIEmailSender,AuthMessageSender(); AuthMessageSender的实例如何进入配置文件中的设置? 解决方法 您应该使用具有强类型配置的 options模式
我有一个ASP.NET核心WebAPI项目,我正在尝试添加配置到我的IEmailServic,我通过DI注入这样:
services.AddTransient<IEmailSender,AuthMessageSender>();

AuthMessageSender的实例如何进入配置文件中的设置?

解决方法

您应该使用具有强类型配置的 options模式:

>创建您的EmailSettings强类型配置类:

public class EmailSettings  
{
    public string HostName { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
}

>更新您的appsettings.json以包含映射到您的EmailSettings配置类的配置部分:

{
  "Logging": {
    "IncludeScopes": false,"LogLevel": {
      "Default": "Debug","System": "Information","Microsoft": "Information"
    }
  },"EmailSettings": {
    "HostName": "myhost.com","Username": "me","Password": "mysupersecretpassword",}
}

>在Startup类的ConfigureServices调用中,将appsettings.json绑定到您的config类

public void ConfigureServices(IServiceCollection services)  
{
    services.Configure<MySettings>(
          options => Configuration.GetSection("EmailSettings").Bind(options));
}

>在AuthMessageSender类中,注入IOptions实例< EmailSettings>进入构造函数

public class AuthMessageSender
{
    private readonly EmailSettings _settings;
    public AuthMessageSender(IOptions<EmailSettings> emailSettings)
    {
       _settings = emailSettings.Value;
      // _settings.HostName == "myhost.com";
    }
}

请注意,在步骤3中,您也可以使用

public void ConfigureServices(IServiceCollection services)  
{
    services.Configure<MySettings>(Configuration.GetSection("EmailSettings"));
}

如果在project.json中添加对Microsoft.Extensions.Options.ConfigurationExtensions的引用:

{
  "dependencies": {
     "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0"
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读