将IConfiguration传递给基本控制器

时间:2020-06-17 00:25:39

标签: .net api asp.net-core model-view-controller

在这个项目中,我必须使用基本控制器创建一个控制器,并且基本控制器的构造函数采用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
       ........
    }
}

我想知道是什么引起了这个问题?预先感谢!

p.s。基本控制器是.net core 2.2,从基本控制器继承的控制器是.net 3.1。

1 个答案:

答案 0 :(得分:0)

正如我的评论所说,对于此类问题,我们可以首先检查appsetting.json格式是否正确,然后检查是否在program.cs中使用了特殊的appsetting.json文件设置。

相关问题