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;
}
让我知道这是否适合你。
在 ASP.Net Core 中,可以使用 IOptions<T>
.
所以如果我有以下 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;
}
让我知道这是否适合你。