为啥将 **appSettings** 部分添加到 App.config 会导致 WPF 应用程序出错?

Posted

技术标签:

【中文标题】为啥将 **appSettings** 部分添加到 App.config 会导致 WPF 应用程序出错?【英文标题】:Why would adding an **appSettings** section to App.config cause an error in WPF application?为什么将 **appSettings** 部分添加到 App.config 会导致 WPF 应用程序出错? 【发布时间】:2010-11-16 10:13:52 【问题描述】:

在我的 WPF 应用程序(复合应用程序)中,我想在 App.config 文件中存储一个变量,但只要我在 App.配置,它给了我这个错误:

类型初始化器 System.Windows.Application 抛出了一个 例外。

App.Config:

<?xml version="1.0" encoding="utf-8" ?>
  <configuration>
      <appSettings>
          <add key="SmartFormMockDirectory" value="C:\test"/>
      </appSettings>
    <configSections>
    </configSections>
    <system.serviceModel>
      <bindings>
        <basicHttpBinding>
          <binding name="Service1Soap" closeTimeout="00:01:00" openTimeout="00:01:00"
            receiveTime...

总的来说,我知道这是有效的since I can get it to work in simple applications like this。

什么可能导致上述错误,我将如何修复它以便我可以简单地将变量添加到 App.config 文件?

【问题讨论】:

对于类型初始化程序异常,您应该尝试查询 InnerException。通常有一个。在这种情况下,它会给你一个更好的答案。不过,安德鲁很可能是正确的。 【参考方案1】:

似乎在抱怨您将&lt;appSettings&gt; 节点置于&lt;configSections&gt; 节点之上。将&lt;configSections&gt; 节点移动到顶部以成为文件中的第一个元素,或者将其删除(因为您似乎没有使用它)。

来自configSections Element:

如果 configSections 元素位于 配置文件,configSections 元素必须是第一个孩子 配置元素的元素。

【讨论】:

这把我逼疯了!将 configSections 作为第一个元素,即使 也解决了它。 我有一个重复的 appSettings 标签。删除副本为我解决了这个问题。

以上是关于为啥将 **appSettings** 部分添加到 App.config 会导致 WPF 应用程序出错?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 asp.net 实体框架 connectionStrings 移动到 web.config 的 appSettings 部分

使用nuget包向appsettings.json添加配置

从 .NET Core 2 中的类中读取 appsettings.json

Web.Config 将单个 AppSettings 转换为 ConfigSource

无法将 appsettings IConfiguration 部分反序列化为类型化元素的数组

ConfigurationManager.AppSettings 性能问题