ASP.Net核心注入设置
在ASP.Net Core中,可以使用IOptions<T>
将配置值注入类中。ASP.Net核心注入设置
所以,如果我有以下appsettings.json
配置:
{
"CustomSection": {
"Foo": "Bar"
},
"RootUrl": "http://localhost:12345/"
}
我可以注入IOptions<CustomSection>
到我的构造函数(假设我已经定义了一个CustomSection
类)和阅读Foo
属性。
如何将RootUrl
设置注入到我的构造函数中或者不支持?
从文档 Using options and configuration objects即不可能:
选项图案使得能够使用定制选项类来表示一组相关的设置。一个类需要为每个设置和一个没有使用任何参数的构造函数(例如默认构造函数)拥有一个公共读写属性,以便用作选项类。
这意味着您需要生成一个类来读取它的配置值。但在你的样本RootUrl
不能通过一个类来构造。
创建一个类,如下
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;
}
让我知道这是否适合你。
没有,因为在配置文件中没有称为'AppSettings'的部分不起作用。 –
@KaiG你可以使用RootUrl,试试吧。 – jkyadav
不,当您尝试使用设置时会引发异常,因为它无法将字符串解析为预期的格式。我相信上面接受的答案是正确的 - 它不被支持。 –
你不能构建一类'RootUrl' – Daniel
你应该[不要注入IOptions到你的构造函数中](https://github.com/simpleinjector/SimpleInjector/issues/143#issuecomment-155029876)。 –
Steven