我有一个自托管的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的单独分区上的单独文件中。此方案严格限制我如何解决问题。谢谢理解!
答案 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";