Передача IConfiguration в базовый контроллер - PullRequest
0 голосов
/ 17 июня 2020

В этом проекте, над которым я работаю, я должен создать контроллер, используя базовый контроллер, а конструктор базового контроллера принимает IConfiguration (я не создавал этот базовый контроллер и не могу контролировать дизайн). Когда я передаю параметр IConfiguration из конструктора подкласса в конструктор базового класса, базовый контроллер всегда жаловался на отсутствующие настройки в конфигурации, хотя я проверял, что они были. Код выглядит так:

    startup.cs:
    public class Startup {
    ......
       public IConfiguration Configuration { get; }
       public IWebHostEnvironment WebHostEnvironment { get; }

       public Startup(IConfiguration configuration, IWebHostEnvironment 
       webHostEnvironment) {
        Configuration = configuration;
        WebHostEnvironment = webHostEnvironment;
        }

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

    ........
    }


  launchsettings.json:
  .....

  "profiles": {
"IIS Express": {
  "commandName": "IISExpress",
  "launchBrowser": true,
  "launchUrl": "api/v1/Test",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "local"
  }
},
.....

appsettings.local.json:
 ....
 "sec1": {
 "sec2": {
  "key": "local-keyyyyyyyy-hexadecimal",
  ......
        } 
}

...

public class TestController : myBaseController
{
  private readonly IConfiguration Configuration;
  public TestController(IConfiguration configuration,IOtherSerive iotherservice) : 
        base(configuration) {

        Configuration = configuration;
       ......
    }
  ......
 }

Базовый контроллер выглядит так:

  .....
  public class myBaseController : ControllerBase 
 {

    private readonly IConfiguration configuration;
    public string key = string.Empty;

    public myBaseController(IConfiguration configuration) {
        key = configuration["sec1:sec2:key"];<----always complained about missing value from configuration here
       ........
    }
}

Интересно, что вызывает эту проблему? Заранее благодарим!

ps Базовый контроллер. net core 2.2, а контроллер, унаследованный от базового контроллера, -. net 3.1.

1 Ответ

0 голосов
/ 19 июня 2020

Как я сказал в комментариях, для такого рода проблемы мы могли бы сначала проверить настройку приложения. json правильный формат или нет, и проверить, использовали ли вы специальный параметр настройки файла json в файле program.cs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...