编写appSetting以分隔*.配置文件

本文关键字:配置文件 分隔 appSetting 编写 | 更新日期: 2023-09-27 18:08:45

我有一个自托管的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文件编程?或者是否存在其他单独存储设置的最佳实践?

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

提前感谢!

只是为了防止评论和回答,如"这不是更容易…"这个服务将在特定的系统上使用增强型写过滤器。这意味着,我将无法对分区进行任何持久的更改。这就是为什么我正在寻找一种方法来存储设置在单独的文件位于单独的分区没有EWF。这种情况严格限制了我解决问题的方式。谢谢您的理解!

编写appSetting以分隔*.配置文件

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

像这样指定配置部分的名称:

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

下面使用。

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";