为什么最新的.net 4.7为我的web.config添加了无效的配置部分?

时间:2017-06-26 16:12:11

标签: asp.net asp.net-mvc .net-4.0 .net-4.7

我遇到了一个asp.net应用程序的问题,其中web.config已更新并动态重新加载。

以下代码用于保存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运行时的计算机上,会向web.config添加一个额外的(空)<System.Windows.Forms.ApplicationConfigurationSection />。由于此设置不能为空,因此在重新加载web.config时会崩溃网络应用。

编辑:问题:为什么最新的.net 4.7会在我的web.config中添加无效的配置部分?

编辑2 :已创建以下问题:https://github.com/Microsoft/dotnet/issues/435

1 个答案:

答案 0 :(得分:1)

我们也碰到了这个。

我认为微软似乎错过了.Net 4.7和早期版本之间的向后兼容性。

你并没有真正提出这个问题,但我们最终做的是在保存后将配置文件作为字符串读取,然后我们用字符串替换删除了违规部分并再次将字符串保存到文件中。它并不漂亮,但它完成了工作。