我在动态更新和重新加载 web.config 的 asp.net 应用程序中遇到问题。
以下代码用于将appsettings
部分保存在web.config
中:
public static void SetWebConfigValue(string keyValue, string value, bool isDefault)
{
if (!string.IsNullOrEmpty(keyValue))
{
Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
AppSettingsSection appSettings = config.AppSettings;
KeyValueConfigurationCollection settings = appSettings.Settings;
if (KeyExists(settings.AllKeys, keyValue))
{
settings.Remove(keyValue);
}
if (!isDefault) settings.Add(keyValue, value);
config.Save(ConfigurationSaveMode.Modified, true);
}
}
当我在具有 .net 4.0 运行时的计算机上部署 Web 应用时,此代码工作正常。但是,在安装了 .net 4.7 运行时的计算机上,会将额外的(空)<System.Windows.Forms.ApplicationConfigurationSection />
添加到 web.config。由于此设置不能为空,因此在重新加载web.config
时,这会使 Web 应用崩溃。
编辑:问题:为什么最新的.net 4.7向我的web.config添加了无效的配置部分?
编辑 2:已创建以下问题:https://github.com/Microsoft/dotnet/issues/435
我们也遇到了这个问题。
我认为看起来Microsoft错过了 .Net 4.7 和早期版本之间的向后兼容性。
你并没有真正提出这个问题,但我们最终做的是在保存配置文件后将其读取为字符串,然后我们用字符串替换删除了有问题的部分,并再次将字符串保存到文件中。它不漂亮,但它可以完成工作。