gpt4 book ai didi

c# - 以编程方式访问任意 web.config - 无法访问 appSettings(app.config 很好)

转载 作者:太空狗 更新时间:2023-10-29 21:14:11 24 4
gpt4 key购买 nike

我正在访问一个配置文件:

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

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

注意:我不是试图访问当前应用程序的 web.config,而是试图修改任意路径中的 web.config。

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

AppSettings 属性访问器抛出异常 - 尝试 GetSection("appSettings") 并将其强制转换为 AppSettingsSection给出同样的异常(exception)。无论哪种方式,这里是:

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

我显然四处搜索,但发现只有访问“当前网络应用程序”的 web.config 或使用 XmlDocument/XDocument 的人。

我的猜测是 .exe.config 文件会自动推断出一些 configSections 类型的信息,这意味着它正确地知道如何处理 appSettings。但是我不知道为什么,根据文件名,它不能与 web.config 一起使用。


啊。对于 app.config,我使用的是 OpenExeConfiguration:

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

这里我使用的是 OpenMappedMachineConfiguration,它似乎用于 machine.config,但是我看不到打开任意 web.config 文件的另一种方式 - 有人吗?

最佳答案

我的错误 - 我可以在打开 web.config 文件时使用 OpenMappedExeConfiguration 就好了:

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

关于c# - 以编程方式访问任意 web.config - 无法访问 appSettings(app.config 很好),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8270993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com