c# -打开设置.设置在app.config中获得关于无效xml的错误(当添加configSource时)

本文关键字:设置 xml 无效 configSource 添加 错误 app config 于无效 | 更新日期: 2023-09-27 18:07:10

在大量示例之后,我在我的app.config文件中添加了以下内容:

一切似乎工作,当我运行应用程序,但当我试图打开设置。设置文件,我得到错误:

"读取app.config文件时发生错误。文件可能已损坏或包含无效的XML。"

设置。设置文件打开,但我得到一个类似的错误信息,如果我试图保存它。

应用程序。配置文件:

<configSections>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
        <section name="test.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
</configSections>
<userSettings>
    <test.Properties.Settings>
        <setting name="server" serializeAs="String">
            <value />
        </setting>
        <setting name="database" serializeAs="String">
            <value />
        </setting>
        <setting name="g_language" serializeAs="String">
            <value>en-US</value>
        </setting>
        <setting name="timeSchedule1" serializeAs="String">
            <value />
        </setting>
        <setting name="timeSchedule2" serializeAs="String">
            <value />
        </setting>
        <setting name="helpLocation" serializeAs="String">
            <value />
        </setting>
        <setting name="SQLAuthType" serializeAs="String">
            <value>0</value>
        </setting>
        <setting name="SQLLogin" serializeAs="String">
            <value />
        </setting>
        <setting name="SQLPsw" serializeAs="String">
            <value />
        </setting>
        <setting name="defaultTimeZone" serializeAs="String">
            <value />
        </setting>
    </test.Properties.Settings>
</userSettings>
<connectionStrings configSource = "testConnect.config"/>

c# -打开设置.设置在app.config中获得关于无效xml的错误(当添加configSource时)

我刚刚收到一个项目,当你试图打开设置时产生同样的错误。设置文件:

"读取app.config文件时发生错误。文件可能已损坏或包含无效的XML。"

在确保XML文档语法正确之后(使用http://validator.w3.org),我删除XML元素,直到错误消失。

在我的例子中,app.config文件包含两个connectionStrings元素:

生成错误

  • 配置
    • connectionStrings
      • 添加
    • connectionStrings
      • 添加

NO ERROR GENERATED

  • 配置
    • connectionStrings
      • 添加
      • 添加

因此,当app.Config文件包含语法正确的元素,但逻辑上不正确时,可能会产生此错误。

我也有同样的问题。和你一样,我在一个单独的文件中有连接字符串:

<connectionStrings configSource = "testConnect.config"/>

我没能找到一个工作,除了在使用设置时删除元素之外。

我在手动重命名解决方案时遇到了同样的错误,它的项目和命名空间。该错误是由App.config文件的<sectionGroup name="applicationSettings">节点中重复的<section>元素引起的。我不确定是什么动作导致了重复的元素被创建,但解决方案是删除重复的元素。

我在connectionStrings元素中也使用configSource。我认为我遇到的问题是,我指的是包含的配置文件的路径相对于构建目标目录(例如bin'debug'ConnectionStrings.config)。我有ConnectionStrings。配置链接项集,以便在生成时复制到输出目录。然而,VS IDE想要在app.settings而不是bin'debug'program.exe.settings构建之前解决它,所以我被困在每个项目中都有这个额外配置文件的副本(这消除了好处),或者使用完全合格的路径。如果我要使用后一种方法,我需要用某种环境变量来表示路径,以便配置文件可以在开发机器和部署机器上工作。这可能是可行的,但看起来。net实际上不会扩展环境变量。

如果有帮助,您可以尝试根据https://stackoverflow.com/a/311835/611672中描述的模式验证app.config。在我的例子中,xml通过了验证,但我仍然得到错误消息。

另外,如果有人在使用此设置添加代码优先迁移时遇到麻烦(得到无法找到connectionStrings.config的错误),这可能是相同的根本原因。

我一直在搞乱我的设置。设置文件和我的app.config文件。我没有发现任何重复的节点,但我已经移动了一些父节点的顺序,这些父节点表示我的app.config中的设置。我只是不喜欢他们的顺序,我想我可以在app.config中改变它。我错了。

我没有发现这是问题,直到我最终删除了app.config,改变了设置中的设置。设置和保存/清理的解决方案/重新生成解决方案。然后,我可以将新生成的app.config与之前出现错误的app.config进行比较。

听起来你的应用程序配置文件没有正确配置,你可以发布你的应用程序配置吗?

我也刚刚遇到这个问题。这似乎可能是由app.config文件中的多个"奇怪"引起的。

我解决它的方法:

  1. 备份你的设置文件和。cs,还有你的app.config(以防万一)
  2. 删除与设置相关的configSections元素,例如app.config
  3. 中的userSettings
  4. 从app.config
  5. 中删除applicationSettings或userSettings部分
  6. Save your app.config
  7. 打开设置编辑器并做任何小的改变,保存

如果你仍然得到错误,开始一个接一个地删除部分,直到找到重复的/有问题的部分。

<configuration>
  <connectionStrings>
    <add name=""
  </connectionStrings>
</configuration>

在我的情况下,我有很多连接字符串和<add name>中的一个字符串是空的。我也犯了和Pressacco提到的一样的错误。谢谢!

我通过这种方式太迟了,但即使我有同样的问题,虽然一切看起来正确的app.config,我得到这个错误。在向app.config文件添加一些属性设置后,我试图编辑/打开设置。这就是我得到这个错误的原因。我所做的是,我恢复了对app.config所做的所有更改,并将所有必需的值直接添加到设置文件中,从而解决了问题。直接向app.config中添加值会产生问题。

  1. 在另一个VS解决方案中,创建一个与你一直在做的项目名称和名称空间相同的新项目。
  2. >在新项目的属性>>设置下,创建您正在工作的项目中的所有设置。
  3. 进入新项目文件夹,即C:'Users'YourUser'Documents'Visual Studio 2022'Projects'ReportsApplication1'ReportsApplication1,复制app.config文件
  4. 粘贴此文件并替换当前项目中的文件
  5. (做)

我注意到这种情况经常发生在我身上,这是由于将Oracle.DataAccess.dll切换为Oracle.ManagedDataAccess.dll。这会创建一个配置部分,如下所示:

<section name="oracle.manageddataaccess.client" 
    type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342"/>

但是我已经在configSections中定义了一个sectionGroup,所以两者不能共存。我通过向oracle.manageddataaccess.client添加一个组来解决问题,然后分组,然后根据需要在我的配置中应用。

<sectionGroup name="oracleClient">
    <section name="oracle.manageddataaccess.client"
        type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</sectionGroup>

一个问题的简单解决方案,花了太长时间才找到!

相关文章: