Appsettings и промежуточное программное обеспечение Core 2.1 - PullRequest
0 голосов
/ 19 ноября 2018

Я создал собственное промежуточное ПО, и теперь я хочу получить доступ к настройкам приложений, которые находятся в другом проекте в моем решении. Должен ли я вставить объект IConfiguration в конструктор промежуточного программного обеспечения и добавить оператор использования Microsoft.Extensions.Configuration? Или есть лучший способ сделать это?

Я работаю с веб-страницей ASP.net с Core 2.1.

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using System;
using System.Threading.Tasks;
public class MyMiddleware
{
  public IConfiguration _configuration;
  public MyMiddleware(RequestDelegate next, IConfiguration config)
  {
     _next = next;
     _ configuration = config;
  } 

1 Ответ

0 голосов
/ 20 ноября 2018

Если вам не нужна вся ваша конфигурация, передаваемая промежуточному программному обеспечению, а только раздел, который вы можете использовать

IOptions<T>

Создать файл класса MyConfig.cs:

public class MyConfig
{
   public string MyConfig1 {get; set;}
   public string MyConfig2 {get; set;}
}

В ConfigureServicesметод в Startup.cs

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

В вашем промежуточном программном обеспечении

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using System;
using System.Threading.Tasks;

public class MyMiddleware
    {
        private readonly IOptions<MyConfig> _appSettings;
        public MyMiddleware(RequestDelegate next, IOptions<MyConfig> config)
        {
            _next = next;
            _configuration = config;
        }

        public MyMethod()
        {
            _configuration.Value.MyConfig1
        }
    }

В файле appsettings.json:

{
  "AppSettings": {
    "AppId": "0001",
    "AppName": "xxxx",
  },
  "MyConfig": {
    "MyConfig1": "xxxxxxx",
    "MyConfig2": "xxxxxxx",
  },
}
...