我有一个asp.net core 2 webapi服务。我想阅读appsettings.json,但我无法弄明白。像往常一样,当我在互联网上搜索时,我会根据最终看起来不起作用的各种版本的框架得到十几个完全不同的答案。
作为示例appsettings.json:
services.AddSingleton<IConfiguration>(Configuration);
首先我尝试了这个:
通过nuget添加Microsoft.Extensions.Configuration和Microsoft.Extensions.Configuration.Json
在我的ConfigureServices方法中,我添加了:
IConfiguration iconfig;
public ValuesController(IConfiguration iConfig)
{
iconfig = iConfig;
}
在我的控制器中,我注入了配置:
return "value: " + iconfig.GetValue<string>("AppSettings:Domain");
要检索它:
function addRow() {
SpreadsheetApp.getActiveSheet().getRange('B7:B').setValue('=IF(ISBLANK(C7), "", CONCATENATE(YEAR(C7), "-", MONTH(C7)))');
}
我可以看到控制器构造函数被调用并传入一个配置,但该值始终为null。
我注意到Startup已经通过了IConfiguration。这是实施中又一个变化的情况,我需要做一些不同的事情吗?
[编辑] 我现在读了 https://joonasw.net/view/aspnet-core-2-configuration-changes
其中说它全部改变并且是自动注入的,但是在遵循代码之后它实际上并没有说明如何获得控制器中的数据。
答案 0 :(得分:1)
您可以在此处查看我的答案:https://stackoverflow.com/a/46940811/2410655
基本上,您创建的类与您在appsettings.json
文件中定义的属性相匹配(在答案中是AppSettings
类)。
然后在ConfigureServices()
中,您使用services.Configure<>
注入该类。 DI将在所有Controllers
中提供该课程。
要访问其数据,您可以从上面的链接查看@ aman的原始问题帖子。
public class HomeController : Controller
{
private readonly AppSettings _mySettings;
public HomeController(IOptions<AppSettings> appSettingsAccessor)
{
_mySettings = appSettingsAccessor.Value;
}
}