配置系统初始化失败


225

我是Visual Studio的新手。我目前正在创建一个登录表单。

我有这个代码。

string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
try
{
    using (OdbcConnection connect = new OdbcConnection(connectionString))
    {
        connect.Open();
        OdbcCommand cmd = new OdbcCommand("SELECT username, password FROM receptionist", connect);
        OdbcDataReader reader = cmd.ExecuteReader();

        if (username_login.Text == username && password_login.Text == password)
        {
            this.Hide();
            MessageBox.Show("Invalid User", "Login Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            this.Close();
        }
        else 
            MessageBox.Show("Invalid User", "Login Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        connect.Close();
    }
}
catch (OdbcException ex)
{
    MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

但是,每当我尝试输入用户名和密码时,都会出现一个错误,提示“ 配置系统初始化失败”。我只是想知道这是什么问题,我该如何解决?

请帮忙。



2
只是另一种情况-如果您正在寻找ConfigurationManager.Appsettings [“”],请确保<appSettings>在配置中。否则,您将收到此例外情况
LCJ

1
如果您有2个地点进行设置,也会发生这种情况
Lawrence Thurman

Answers:


392

确保项目中的配置文件(如果是web则为web.config,如果是Windows则为app.config)以以下方式启动:

<?xml version="1.0"?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" 
                      type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >

            <section name="YourProjectName.Properties.Settings" 
                     type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
                     requirePermission="false" />

        </sectionGroup>
    </configSections>
</configuration>

请注意,在configuration元素内部,第一个孩子必须是configSections元素。

在element 的name属性中section,确保将其替换YourProjectName为实际项目的名称。

我碰巧在一个类库项目中创建了一个Web服务,然后将配置文件复制(覆盖)(以进行端点配置)到我的Windows应用程序中,开始出现同样的问题。我无意中搬走了configSections

它对我有用,希望对您有所帮助


79
“在'configuration'元素内,第一个孩子必须是'configSections'元素” <<这对我来说至关重要。谢谢。
demoncodemonkey 2011年

7
只是另一种情况-如果您正在寻找ConfigurationManager.Appsettings [“”],请确保<appSettings>在配置中。否则,您将收到此例外情况
LCJ

6
它解决了我的问题,其中configSections元素存在但位于app.config的后面。我不禁要问为什么会发生此错误。我认为XML元素不需要排序。
2013年

3
这是对的。configSections应该是配置元素下的第一个子节点。
Umang Desai

7
Microsoft实施此app.config的方式受到阻碍!!!他们至少可以做的是抛出更好的错误消息!
codenamezero 2015年

105

c:\ Users \ username \ AppData \ Local \ appnamec:\ Users \ username \ AppData \ Roaming \ appname删除旧的配置文件,然后尝试重新启动应用程序。


2
谢谢,工作。但是我还是不明白是什么问题?
Liquide 2014年

1
本地文件夹下的user.config文件为空。删除本地文件夹应用后,开始工作
Ozgur 2014年

3
谢谢工作。但是可能是此错误的原因。
vasuy19 2015年

1
我的文件充满了低值(0x00)。我复制了一个工作副本,然后很好
DanW 2015年

1
我的配置文件在一次断电事件中已损坏-通常为XML的配置文件充满了NUL字节
mroselli 2016年

19

有时会发生错误,因为Windows在

C:\ Users \ App Data \ Local \“您的应用名称” ...

只需删除此文件夹并完成即可。试试吧。


2
谢谢。我无法解决我的应用程序未“拾取”设置文件字符串的问题。我清理了配置文件,重新生成了.suo文件,删除了所有现有的.settings文件,但仍然无法从任何新的设置文件中进行加载,但是在构建时未收到任何错误。这场噩梦终于结束了。
Rachael

13

如果您已将自己的自定义配置部分添加到中App.Config,请确保已在<configSections>元素中定义了该部分。我添加了我的配置XML,但忘记了在顶部声明配置部分-这导致了异常“配置系统无法初始化”。


3
另外-如果您在顶部声明了一个部分,并且下面部分中的名称有错字,则会出现此错误。如果查看抛出的异常的InnerException,它将告诉您问题所在的部分。
shindigo 2014年

6

我在MSTest类上遇到了同样的问题:Marlon Grech在他的文章中说:“该元素必须定义为App.config中的第一个元素。”

因此,请确保该元素是该元素下的第一个元素。我把AppSettings放在首位。


哦,..我的坏事:您确实做到了,但我没有注意到;-)感谢您的澄清
kleopatra 2013年

4

我知道已经解决了这个问题,但是在单元测试中我遇到了完全相同的问题。我正在撕头发-添加一个appSettings部分,然后根据答案声明配置部分。最终发现我已经在配置文件中进一步声明了appSettings部分。这两节都指向我的外部设置文件“ appSettings.config”,但是第一个appSettings元素使用属性文件,而另一个使用属性configSource。我知道问题是关于connectionStrings的。果然,如果appSettings元素是用不同属性复制的connectionStrings元素,则会发生这种情况。

希望这可以为其他人提供解决方案,然后再走我走的路,这会浪费一两个小时。感叹我们开发人员的生命。几天来,我们在调试上浪费的时间比在开发上花费的时间多!


答对了。曾经appSettingsapplicationSettings两者。
SushiGuy

3

卸载Oracle客户端驱动程序后,我开始出现此问题,它删除了C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ machine.config

从另一台计算机复制它可以解决此问题。


3
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="xyz" value="123" />    
  </appSettings>
</configuration>

3

如果您具有用户范围的设置,则[Userfolder]\AppData\Local\[ProjectName]文件夹中的某个位置可能还会有一个user.config文件。

如果以后删除用户范围设置,则不会自动删除user.config,并且它的存在可能会导致相同的错误消息。删除文件夹对我有用。


1

哇,我花了很长时间才弄清楚这一点。由于某种原因,更改[assembly: AssemblyCompany("CompanyName")]at 属性AssemblyInfo.cs会使该错误消失。我所引用的项目的属性值不同[assembly: AssemblyCompany("CompanyName")]。我确保两个项目都具有相同的属性值,并且效果很好!


这是一个错误吗?很难期望您的公司名称与您碰到的第三方项目相匹配。
丹妮丝·斯基德莫尔

1

我遇到了同样的问题,我通过从App.config中删除verion =“ v3.5”解决了我的问题。

之前

 <?xml version="1.0" encoding="utf-8"?>
  <configuration>

  <startup>

 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
 </startup>
 <supportedRuntime version="v3.5" />//Remove this
</configuration>

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <startup>

    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
  </startup>
  </configuration>

这是在上使用版本的方法

MSDN支持运行时元素


1

经过长时间的搜索,我发现此异常具有内部异常,该异常告诉您配置文件到底出了什么问题


我试图注释掉我的app.config的不同部分,并且在异常情况下甚至没有查看内部异常。在看到这个答案之后,我发现了问题所在。谢谢。
Sid

0

值得注意的是,如果将诸如连接字符串之类的内容添加到app.config中,则如果您在已定义的配置部分之外添加项目,则不会立即抱怨,但是当您尝试访问它时,您可能会得到以上错误。

折叠所有主要部分,并确保没有任何已定义的项目之外的项目。显而易见,当您真正发现它时。


0

就我而言,唯一的解决方案是System.Configuration在我的Test项目中也添加对的引用。


0

这有点愚蠢,但对我来说,我是通过对代码进行源代码控制获取最新信息来解决此问题的。我认为其他人添加了一些新的配置元素,因此我需要覆盖我的配置文件。OP会显示我遇到的错误,但实际上并没有指出正确的方向。


0

我也遇到过同样的问题,但是我偶然写了,而没有写,前一个应该放在这个标签内。因此,出现“配置系统无法初始化”错误。希望对你有帮助


0

就我而言,我在app.config文件中有两个配置节。删除隐藏在代码行中的一个后,该应用程序可以正常工作。

因此,对于具有相同问题的某人,请首先检查是否有重复的配置节。


0

如果您要使用Azure WebJob,则必须在升级到最新的4.6.1之后删除以下内容。

  <compilation debug="true" targetFramework="4.6.1">
    <assemblies>
      <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    </assemblies>
  </compilation>

希望这可以帮助。


0

就我而言,在我的.edmx文件中,我运行了“从数据库更新模型”命令。此命令向我的app.config文件中添加了不必要的连接字符串。我删除了该连接字符串,一切恢复正常。


0

我通过使用以下代码解决了问题

   <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings"
                  type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >

      <section name="YourProjectName.Properties.Settings"
               type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
               requirePermission="false" />

    </sectionGroup>

  </configSections>
  <appSettings>
    <add key="SPUserName" value="TestUser" />
    <add key="SPPassword" value="UserPWD" />
  </appSettings>
</configuration>

0

如果其中有一些“特殊”字符,请尝试将.config文件保存为utf-8。就我的控制台应用程序而言,这就是问题。


0

正如@Flash Gordon在其评论中提到的那样,您需要在App.config文件中的下定义任何自定义标签(作为一个部分)<configSections>。例如,您正在使用SpecFlow并添加<specFlow>标签来进行测试自动化项目,那么最简单的App.config版本将如下所示: 在此处输入图片说明


0

我刚有了它,这是因为我有一个<configuration>嵌套在元素内部的<configuration>元素。


0

我重新启动了Visual Studio,甚至整个PC。我清理了项目,重建并删除了bin文件。

在我将配置从x64更改为x86之前,没有任何帮助。它可以在x86上工作,但是当我将其改回它时,它也可以工作!


0

我尝试了上述所有解决方案,以弄清楚为什么我的一个单元测试未能从完美的app.config文件中获取配置。

我对同一个程序集有2个引用,如下所示:

重复参考

之前和之后的项目文件

删除黄色的(重复的)参考文献对我来说是固定的。

我希望这对其他人有用,这让我有些疯狂。


0

.Net Core WinForms / WPF / .Net标准类库项目的简单解决方案

步骤1:System.Configuration.ConfigurationManager通过Nuget Manager 安装

步骤2:添加新App.Config文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Bodrum" value="Yalikavak" />    
  </appSettings>
</configuration>

第三步:获取价值

string value = ConfigurationManager.AppSettings.Get("Bodrum");
// value is Yalikavak

如果您从中调用它,Class LibraryApp.Config在主项目中添加文件。


0

如果您有一个自定义部分,则需要在configures标记下的configSections下提到它。

请检查您的转换文件,确保您删除了不必要的标签。只有要更改的部分才需要在转换文件中出现。如果不需要,不要在转换文件中提及config部分。这也会引起问题。

如果您在machine.config中有任何语法错误,则也会出现此错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.