在这个项目中,我必须使用基本控制器创建一个控制器,并且基本控制器的构造函数采用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。
答案 0 :(得分:0)
正如我的评论所说,对于此类问题,我们可以首先检查appsetting.json格式是否正确,然后检查是否在program.cs中使用了特殊的appsetting.json文件设置。