使用.NET ConfigurationManager从字符串而不是app.config文件中读取设置

时间:2012-03-20 00:39:47

标签: c# configurationmanager system.configuration

我们在数据中心的不同计算机上运行多个服务实例(以.exe文件的形式实现)。但是,我们希望将此.exe文件的配置参数存储在中央位置(而不是每个计算机的.exe.config中)。

为此,我们计划将.exe.config文件的内容移动到中央存储库(Active Directory或SQL)中的属性,并使.exe在从此存储库读取的所有计算机上运行。

我想重用所有用于读/写配置信息的现有类(使用ConfigurationManager,ConfigurationProperty等,基本上使用整个.NET配置框架) - 但是,而不是从.exe.config文件加载它(它默认情况下执行 - 我希望它从我将从该中央存储库检索的XML blob的字符串值加载它。

我试图找到使用ConfigurationManager API执行此操作的方法,但找不到任何可以从字符串加载配置节的内容。有什么指针吗?

2 个答案:

答案 0 :(得分:0)

我想你可以编写自己的ConfigurationSection,然后从中央存储库加载真实的配置数据。

或者,您是否有适合在各种服务器上安装软件的集中部署系统?您的服务如何部署?您应该寻找已经解决问题的现有工具,而不是为您的软件增加复杂性。

答案 1 :(得分:0)

虽然我怀疑这是它的目的,但我们在使用ProtectedConfigurationProvider的项目中完成了这项工作。基本上,这个类应该允许您加密配置文件,但我们只需要将Decrypt方法连接到我们的数据库并返回配置信息。有关实施的说明,请参阅this。这感觉有点hacky,但如果没有完全重写所有的配置解析逻辑,我们找不到任何其他方法。