为什么最新的 .net 4.7 向我的 web.config 添加了一个无效的配置部分?
Why latest .net 4.7 adds an invalid configsection to my web.config?
我在使用 asp.net 应用程序时遇到问题,其中 web.config 会动态更新和重新加载。
以下代码用于保存web.config
中的appsettings
部分:
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
时导致网络应用程序崩溃。
编辑:问题:为什么最新的 .net 4.7 向我的 web.config 添加了一个无效的配置部分?
编辑 2:已创建以下问题:https://github.com/Microsoft/dotnet/issues/435
我们运行也参与其中。
我认为 Microsoft 似乎错过了 .Net 4.7 和更早版本之间的向后兼容性。
你并没有真正提出这个问题,但我们最终做的是在保存后将配置文件作为字符串读取,然后我们用字符串替换删除了有问题的部分并将字符串保存到再次归档。它不漂亮,但它完成了工作。
我在使用 asp.net 应用程序时遇到问题,其中 web.config 会动态更新和重新加载。
以下代码用于保存web.config
中的appsettings
部分:
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
时导致网络应用程序崩溃。
编辑:问题:为什么最新的 .net 4.7 向我的 web.config 添加了一个无效的配置部分?
编辑 2:已创建以下问题:https://github.com/Microsoft/dotnet/issues/435
我们运行也参与其中。
我认为 Microsoft 似乎错过了 .Net 4.7 和更早版本之间的向后兼容性。
你并没有真正提出这个问题,但我们最终做的是在保存后将配置文件作为字符串读取,然后我们用字符串替换删除了有问题的部分并将字符串保存到再次归档。它不漂亮,但它完成了工作。