如何解决注册额外的配置文件 .NET Core
我正在构建一个 .NET Core 2.1 Windows 服务,它将监视 IIS 应用程序中的站点。我们需要多个配置文件,其中一个将应用于服务器内的一个网站,但不知道每台服务器上将托管多少个网站。
我希望这些文件具有使用 IOptionsMonitor
的 .NET 核心提供程序的重新加载功能,但我不确定如何在默认 Host
之外进行设置,因为这些配置没有真正适用于 Host
配置。
我考虑过实现自己的管理器并将其注册为 .AddSingleton<SiteConfigManager>()
上的 Host
。这似乎是正确的,但我不确定如何实际创建此自定义 SiteConfigManager
。这就是我正在考虑做的:
public class SiteConfigManager
{
private readonly IConfiguration _configuration;
private readonly IServiceCollection _serviceCollection;
private readonly IOptionsMonitor<DefaultSiteConfiguration> _sitesConfig;
public SiteConfigManager(IServiceCollection serviceCollection,IConfiguration configuration)
{
_serviceCollection = serviceCollection;
_configuration = configuration;
_sitesConfig = new OptionsMonitor<DefaultSiteConfiguration>(new OptionsFactory<DefaultSiteConfiguration>(new IConfigureOptions<DefaultSiteConfiguration>[0],new List<IPostConfigureOptions<DefaultSiteConfiguration>>()),new IOptionsChangetokenSource<DefaultSiteConfiguration>[1] { new ConfigurationChangetokenSource<DefaultSiteConfiguration>(_configuration) },new OptionsCache<DefaultSiteConfiguration>());
}
public IOptionsMonitor<DefaultSiteConfiguration> Configuration { get => _sitesConfig; }
public void AddConfiguration(string siteName)
{
_serviceCollection.Configure<DefaultSiteConfiguration>(siteName,_configuration);
}
}
令人失望的是我是否在此处正确使用和初始化 IOptionsMonitor
并正确配置 IServiceCollection
。
我怀疑的用法如下所示:
public class SiteMonitor : BackgroundService
{
private readonly SiteConfigManager _siteConfig;
public SiteMonitor(SiteConfigManager siteConfig)
{
_siteConfig = siteConfig;
}
public string SiteName { get; set; }
public void Monitor()
{
string value = _siteConfig.Configuration.Get(SiteName).someConfigValue;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。