编写appSetting以分隔* .config文件

时间:2014-06-16 13:54:14

标签: c# app-config

我有一个自托管的web api项目,appSettings存储在不同的位置。我使用file=""

实现了这一目标
<appSettings file="D:\myLocation\api.config">
  </appSettings>

然后我可以使用以下代码阅读我的设置:

var value = ConfigurationManager.AppSettings["MyKey"];

但是当我尝试重写该值时,使用以下代码:

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["MyKey"].Value = "someNewValue"
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");

我更新了原始app.config文件,而不是更新我单独存储的文件。 有没有办法以编程方式更新外部appSettings文件?或者可能还有其他分别存储设置的最佳做法?

如果您需要更多信息,请询问!

提前谢谢!

更新

只是为了防止评论和答案,例如&#34;它不会更容易......&#34; - 此服务将适用于应用了增强型写过滤器的特定系统。这意味着,我无法对分区进行任何持久的更改。这就是为什么我正在寻找一种方法来将设置存储在位于不带EWF的单独分区上的单独文件中。此方案严格限制我如何解决问题。谢谢理解!

3 个答案:

答案 0 :(得分:1)

指定配置部分的名称,如下所示:

config.AppSettings.SectionInformation.ConfigSource = "api.config";

答案 1 :(得分:1)

为什么不将外部配置文件作为常规Xml文件打开并编写更改?这样你就不用担心别的了。

答案 2 :(得分:0)

请在下方使用。

var configFile = new FileInfo("D:\WebsiteABC\Web.config");
var vdm = new VirtualDirectoryMapping(configFile.DirectoryName, true, configFile.Name);
var wcfm = new WebConfigurationFileMap();
wcfm.VirtualDirectories.Add("/", vdm);
configuration = WebConfigurationManager.OpenMappedWebConfiguration(wcfm,  "/");
configuration.AppSettings.SectionInformation.ConfigSource = "AppSettings.config";