从启动访问配置对象 class
Access to Configuration object from Startup class
我想从我的 ASP.NET vNext 项目的许多控制器中访问我公司的 Active Directory,我将域名插入到我的 config.json 文件中,所以我可以访问它来自配置 class。我发现每次我想访问我的 config.json 时总是实例化一个新的 Configuration 对象很麻烦,有没有办法通过 IConfiguration
API 访问 Configuration [=18] =]初始化进入Startupclass?
如何执行此操作的示例:
假设您有如下 config.json:
{
"SomeSetting1": "some value here",
"SomeSetting2": "some value here",
"SomeSetting3": "some value here",
"ActiveDirectory": {
"DomainName": "DOMAIN-NAME-HERE"
}
}
创建一个包含您的选项信息的 POCO 类型:
public class ActiveDirectoryOptions
{
public string DomainName { get; set; }
}
在Startup.cs中,配置服务时:
services.Configure<ActiveDirectoryOptions>(optionsSetup =>
{
//get from config.json file
optionsSetup.DomainName = configuration.Get("ActiveDirectory:DomainName");
});
在所有想要获取此配置设置的控制器中,执行类似...此处的选项由 DI 系统注入:
public class HomeController : Controller
{
private readonly IOptions<ActiveDirectoryOptions> _activeDirectoryOptions;
public HomeController(IOptions<ActiveDirectoryOptions> activeDirectoryOptions)
{
_activeDirectoryOptions = activeDirectoryOptions;
}
public IActionResult Index()
{
string domainName = _activeDirectoryOptions.Options.DomainName;
........
}
}
回复评论:
我可以想到几个选项:
在操作中,您可以执行
var options = HttpContext.RequestServices.GetRequiredService<IOptions<ActiveDirectoryOptions>>().Options;
您可以为使用 FromServicesAttribute
装饰的动作设置一个参数。该属性将导致从 DI 中检索参数值。
示例:
public IActionResult Index([FromServices] IOptions<ActiveDirectoryOptions> options)
我更喜欢 #2 而不是 #1,因为在单元测试的情况下,它会为您提供有关所有依赖部分的信息。
我想从我的 ASP.NET vNext 项目的许多控制器中访问我公司的 Active Directory,我将域名插入到我的 config.json 文件中,所以我可以访问它来自配置 class。我发现每次我想访问我的 config.json 时总是实例化一个新的 Configuration 对象很麻烦,有没有办法通过 IConfiguration
API 访问 Configuration [=18] =]初始化进入Startupclass?
如何执行此操作的示例:
假设您有如下 config.json:
{
"SomeSetting1": "some value here",
"SomeSetting2": "some value here",
"SomeSetting3": "some value here",
"ActiveDirectory": {
"DomainName": "DOMAIN-NAME-HERE"
}
}
创建一个包含您的选项信息的 POCO 类型:
public class ActiveDirectoryOptions
{
public string DomainName { get; set; }
}
在Startup.cs中,配置服务时:
services.Configure<ActiveDirectoryOptions>(optionsSetup =>
{
//get from config.json file
optionsSetup.DomainName = configuration.Get("ActiveDirectory:DomainName");
});
在所有想要获取此配置设置的控制器中,执行类似...此处的选项由 DI 系统注入:
public class HomeController : Controller
{
private readonly IOptions<ActiveDirectoryOptions> _activeDirectoryOptions;
public HomeController(IOptions<ActiveDirectoryOptions> activeDirectoryOptions)
{
_activeDirectoryOptions = activeDirectoryOptions;
}
public IActionResult Index()
{
string domainName = _activeDirectoryOptions.Options.DomainName;
........
}
}
回复评论:
我可以想到几个选项:
在操作中,您可以执行
var options = HttpContext.RequestServices.GetRequiredService<IOptions<ActiveDirectoryOptions>>().Options;
您可以为使用
FromServicesAttribute
装饰的动作设置一个参数。该属性将导致从 DI 中检索参数值。 示例:public IActionResult Index([FromServices] IOptions<ActiveDirectoryOptions> options)
我更喜欢 #2 而不是 #1,因为在单元测试的情况下,它会为您提供有关所有依赖部分的信息。