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"/>
我刚刚收到一个项目,当你试图打开设置时产生同样的错误。设置文件:
"读取app.config文件时发生错误。文件可能已损坏或包含无效的XML。"
在确保XML文档语法正确之后(使用http://validator.w3.org),我删除XML元素,直到错误消失。
在我的例子中,app.config文件包含两个connectionStrings元素:
生成错误
- 配置
- connectionStrings
- 添加
- connectionStrings
- 添加
- connectionStrings
NO ERROR GENERATED
- 配置
- connectionStrings
- 添加
- 添加
- 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文件中的多个"奇怪"引起的。
我解决它的方法:
- 备份你的设置文件和。cs,还有你的app.config(以防万一)
- 删除与设置相关的configSections元素,例如app.config 中的userSettings
- 从app.config 中删除applicationSettings或userSettings部分
- Save your app.config
- 打开设置编辑器并做任何小的改变,保存
如果你仍然得到错误,开始一个接一个地删除部分,直到找到重复的/有问题的部分。
<configuration>
<connectionStrings>
<add name=""
</connectionStrings>
</configuration>
在我的情况下,我有很多连接字符串和<add name>
中的一个字符串是空的。我也犯了和Pressacco提到的一样的错误。谢谢!
我通过这种方式太迟了,但即使我有同样的问题,虽然一切看起来正确的app.config,我得到这个错误。在向app.config文件添加一些属性设置后,我试图编辑/打开设置。这就是我得到这个错误的原因。我所做的是,我恢复了对app.config所做的所有更改,并将所有必需的值直接添加到设置文件中,从而解决了问题。直接向app.config中添加值会产生问题。
- 在另一个VS解决方案中,创建一个与你一直在做的项目名称和名称空间相同的新项目。
- >在新项目的属性>>设置下,创建您正在工作的项目中的所有设置。
- 进入新项目文件夹,即C:'Users'YourUser'Documents'Visual Studio 2022'Projects'ReportsApplication1'ReportsApplication1,复制app.config文件
- 粘贴此文件并替换当前项目中的文件
- (做)
我注意到这种情况经常发生在我身上,这是由于将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>
一个问题的简单解决方案,花了太长时间才找到!