【问题标题】:reading appSettings from asp.net core webapi从 asp.net 核心 webapi 读取 appSettings
【发布时间】:2018-04-27 21:18:30
【问题描述】:

我有一个 asp.net core 2 webapi 服务。我想阅读 appsettings.json 但我无法弄清楚。像往常一样,当我在互联网上搜索时,我得到了十几个完全不同的答案,这些答案基于框架的不同版本,最终似乎不起作用。

以 appsettings.json 为例:

"AppSettings": {
  "Domain": "http://localhost"
}

首先我尝试了这个:

通过 nuget Microsoft.Extensions.Configuration 和 Microsoft.Extensions.Configuration.Json 添加

在我的 ConfigureServices 方法中我添加了:

services.AddSingleton<IConfiguration>(Configuration);

在我的控制器中,我注入了配置:

IConfiguration iconfig;
public ValuesController(IConfiguration iConfig)
{
    iconfig = iConfig;
}

要检索它:

return "value: " + iconfig.GetValue<string>("AppSettings:Domain");

我可以看到控制器构造函数被调用并传入配置,但值始终为空。

我确实注意到 Startup 已经传入了 IConfiguration。这是实施方式的另一个变化,我需要做一些不同的事情吗?

[编辑] 我现在读过 https://joonasw.net/view/aspnet-core-2-configuration-changes

这表示一切都再次发生了变化并且是自动注入的,但是在遵循代码之后它实际上并没有说明您如何获得控制器中的数据。

【问题讨论】:

  • IConfigurationRoot 注入您的控制器,然后像这样访问您的值:config["AppSettings:Domain"]
  • 您发布的代码对我来说很好用。我只需要修复 appsettings.json 因为您发布的不是有效的 json。

标签: asp.net-web-api asp.net-core


【解决方案1】:

你可以在这里看看我的回答: https://stackoverflow.com/a/46940811/2410655

基本上,您创建一个与您在appsettings.json 文件中定义的属性匹配的类(答案是AppSettings 类)。

然后在ConfigureServices() 中,您使用services.Configure&lt;&gt; 注入该类。该课程将在 DI 的所有Controllers 中提供。

要访问其数据,您可以通过上面的链接查看@aman 的原始问题帖子。

public class HomeController : Controller
{
    private readonly AppSettings _mySettings;

    public HomeController(IOptions<AppSettings> appSettingsAccessor)
    {
        _mySettings = appSettingsAccessor.Value;
    }
}

【讨论】:

    猜你喜欢
    • 2020-06-08
    • 2019-05-18
    • 1970-01-01
    • 2021-07-13
    • 2020-10-19
    • 2017-07-27
    • 2017-03-22
    • 1970-01-01
    相关资源
    最近更新 更多