编程访问任意web.config -不能访问appSettings (app.config可以)

本文关键字:config 访问 app 可以 appSettings 任意 web 编程 不能 | 更新日期: 2023-09-27 18:15:49

我这样访问配置文件:

var map = new ConfigurationFileMap(configPath);
var config = ConfigurationManager.OpenMappedMachineConfiguration(map);
config.AppSettings.Settings.Add("SomeSetting", "SomeValue");

它适用于任何。exe。配置文件,但不包含任何web.config.

注意:我不是试图访问网络。当前应用程序的配置,我正试图修改web。在任意路径下配置

(我尝试过WebConfigurationManager而不是ConfigurationManager,但它给出了相同的结果)

异常是由AppSettings属性访问器抛出的-尝试GetSection("appSettings")并将其转换为AppSettingsSection当然会给出相同的异常。不管怎样,都是这样:

System.InvalidCastException: Unable to cast object of type 'System.Configuration.DefaultSection' to type 'System.Configuration.AppSettingsSection'.

我显然已经搜索了周围,但发现只有人访问网络。配置为"当前web应用程序"或使用XmlDocument/XDocument

我猜是。exe。配置文件自动获取一些configsections类型的信息,这意味着它正确地知道如何处理appSettings。但是我不知道为什么,基于文件名,它不能与web.config一起工作。


啊。对于app.config,我使用openexecconfiguration:

// works fine for .exe.config
var config = ConfigurationManager.OpenExeConfiguration("some-assembly-here.exe");
config.AppSettings.Settings.Add("SomeSetting", "SomeValue");
config.Save();

这里我使用OpenMappedMachineConfiguration,这似乎是机器。配置,但我不能看到另一种方式打开一个任意的网络。配置文件-有人知道吗?

编程访问任意web.config -不能访问appSettings (app.config可以)

我的错误-我可以在打开网页时使用OpenMappedExeConfiguration。配置文件:

            var map = new ExeConfigurationFileMap();
            map.ExeConfigFilename = configPath;
            var config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);