ASP.Net 核心注入设置

ASP.Net Core injecting setting

在 ASP.Net Core 中,可以使用 IOptions<T>.

将配置值注入 class

所以如果我有以下 appsettings.json 配置:

{
  "CustomSection": {
    "Foo": "Bar"
  },
  "RootUrl": "http://localhost:12345/"
}

我可以将 IOptions<CustomSection> 注入我的构造函数(假设我已经定义了 CustomSection class)并读取 Foo 属性。

如何将 RootUrl 设置注入到我的构造函数中,或者这是否不受支持?

来自文档 Using options and configuration objects不可能:

The options pattern enables using custom options classes to represent a group of related settings. A class needs to have a public read-write property for each setting and a constructor that does not take any parameters (e.g. a default constructor) in order to be used as an options class.

这意味着您需要生成一个 class 来读取它的配置值。但是在您的示例中 RootUrl 无法通过 class.

构造

如下创建class

public class AppSettings {
    public string RootUrl{ get; set; }
}

如下所示将其注入您的 startup.cs。

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

并在您的控制器中使用它,如下所示。

public CustomerController(IOptions<AppSettings> appSettings)
{
    [variable] = appSettings.Value;
}

让我知道这是否适合你。