配置系统初始化失败。

257

我目前正在创建一个登录表单,有以下代码:

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);
}

但是每当我尝试输入用户名和密码时,就会出现一个名为“Configuration system failed to initialize”的错误。这是什么问题,我该如何解决?


请参见配置系统初始化失败异常 - The Scrum Meister
2
另一种场景 - 如果您正在查找ConfigurationManager.Appsettings [“”],请确保<appSettings>存在于配置中。否则,您将收到此异常。 - LCJ
1
如果您的appsettings有两个位置,也可能会发生这种情况。 - Lawrence Thurman
29个回答

423

确保你项目中的配置文件(如果是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 元素。

section 元素的 name 属性中,请确保用你实际项目的名称替换 YourProjectName

我曾经创建了一个 Web 服务类库项目,然后我复制(覆盖)了配置文件(为了带上端点配置)到我的 Windows 应用程序中,结果开始出现同样的问题。我不小心移除了 configSections


87
“configuration”元素内的第一个子元素必须是“configSections”元素,这是对我来说至关重要的一点。谢谢。 - demoncodemonkey
9
另一种情况 - 如果你正在寻找 ConfigurationManager.Appsettings[""],请确保 <appSettings> 在配置文件中存在。否则,你将会收到此异常。 - LCJ
7
它解决了我的问题,其中“configSections”元素存在于app.config的后面部分。我忍不住要问为什么会出现这个错误。我认为XML元素不需要被排序。 - Tae-Sung Shin
4
没问题,这是正确的。configSections 应该是 configuration 元素下的第一个子节点。 - Umang Desai
9
微软实现这个app.config的方式很糟糕!他们至少应该提供一个更好的错误提示信息! - codenamezero
显示剩余6条评论

130

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


2
谢谢,工作正常。但我仍然不明白问题出在哪里? - liquide
1
本地文件夹中的user.config文件为空。删除本地文件夹后,应用程序开始工作。 - Ozgur
3
谢谢,它起作用了。但是这个错误的原因是什么呢? - vasuy19
1
我的文件中充满了低值(0x00)。我复制了一个正常的文件,然后就没问题了。 - DanW
1
我的配置文件在此位置在一次停电事件期间损坏了 - 正常情况下是XML的配置文件被填充了NUL字节。 - mroselli
显示剩余5条评论

21
有时候,错误是因为Windows在C:\Users\App Data\Local\"Your App Name"文件夹中创建了一个重复的文件夹导致的。只需删除该文件夹即可解决问题。请尝试此方法。

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

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

3
如果你在顶部声明了一个区块并且下面的区块名称有拼写错误,你会得到这个错误。如果查看抛出异常的InnerException,它将告诉你哪个区块存在问题。 - shindigo
@shindigo提到的innerException也会告诉你哪个文件出了问题。在我的项目中,它与用户的应用数据无关,而是在[project_path]\bin\Debug\net5.0-windows\MVVM Playground.dll.config。删除它可以消除未正确定义部分的错误,但是应用程序找不到任何数据。我不得不手动将我的App.config复制到那个文件中。 - Aufgeschissener Kunde
我还发现在运行调试器时,可以将 App.config 设置为始终“复制最新的”:单击解决方案资源管理器中的文件,会出现其他属性,这些属性在仅查看文件时不可用。将属性“复制到输出目录”更改为“如果较新则复制”。 - Aufgeschissener Kunde

9

经过长时间的搜索,我意识到这个异常有一个内部异常,可以告诉你配置文件出了什么问题。


1
我试图注释和取消注释我的app.config的不同部分,但在异常情况下甚至没有查看内部异常。在看到这个答案后,我找到了问题所在。谢谢。 - Sid

6

我曾经遇到一个与MSTest类相同的问题:Marlon Grech在他的文章中说“<configSections>元素必须定义为App.config文件中的第一个元素。”

因此,请确保在<configuration>元素下,<configSections>是第一个元素。我曾经把<AppSettings>放在了第一位。


哦,我的错:你确实这样做了,但我没有注意到;-) 感谢澄清。 - kleopatra

5

如果您有用户范围的设置,您可能在[Userfolder]\AppData\Local\[ProjectName]文件夹中找到一个user.config文件。

如果您稍后删除了用户范围的设置,则user.config不会自动删除,其存在可能会导致相同的错误消息。删除该文件夹对我很有帮助。


4
我知道这个问题已经有答案了,但是我在我的单元测试中也遇到了完全相同的问题。我抓狂了 - 添加了一个appSettings部分,然后根据答案声明了配置部分。最后发现我已经在我的配置文件中声明了一个appSettings部分。两个部分都指向我的外部设置文件"appSettings.config",但第一个appSettings元素使用属性file,而另一个使用属性configSource。我知道这个问题是关于connectionStrings的。确实,如果appSettings元素是connectionStrings元素被重复使用不同的属性,就会出现这种情况。
希望这能为其他人提供解决方案,让他们在走我走过的路之前找到答案,这样就不会浪费一两个小时了。叹气哦,我们开发者的生活啊。有些日子我们浪费的时间调试比我们花在开发上的时间还要多!

太好了。同时拥有appSettingsapplicationSettings - SushiGuy

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

3
我卸载了Oracle客户端驱动程序,结果我的C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\machine.config被删除后,出现了这个问题!从另一台计算机复制此文件解决了问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接