配置系统初始化失败

问题描述 投票:206回答:21

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

但每当我尝试输入用户名和密码时,都会出现一个错误,称为配置系统无法初始化。我只是想知道这是什么问题,我怎么能解决这个问题?

请帮忙。

c# mysql visual-studio-2010 visual-studio login
21个回答
371
投票

确保项目中的配置文件(web.config if web或app.config if windows)以:

<?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元素。

name元素的section属性中,请确保将YourProjectName替换为您的实际项目名称。

碰巧我在类库项目中创建了一个web服务,然后我复制(覆盖)配置文件(为了使端点配置)到我的Windows应用程序,我开始遇到同样的问题。我无意中删除了configSections

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


1
投票

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


1
投票

与我相同的问题我通过从App.config中删除version =“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 Support Runtime Element


0
投票

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

折叠所有主要部分,并确保没有定义的部分之外的项目。很明显,当你真正发现它时。


0
投票

在我的情况下,唯一的解决方案是在我的测试项目中添加对System.Configuration的引用。


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>

101
投票

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


0
投票

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


0
投票

正如@Flash Gordon在评论中提到的,您需要在<configSections>下的App.config文件中定义任何自定义标记(作为一个部分)。例如,您正在使用SpecFlow进行测试自动化项目并添加<specFlow>标记,然后最简单的App.config版本将如下所示:enter image description here


0
投票

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


0
投票

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


18
投票

有时会出现错误,因为Windows会在窗口中创建副本

C:\ Users \ App Data \ Local \“You App Name”......

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


12
投票

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


6
投票

我在MSTest类中遇到了同样的问题:Marlon Grech in his article说“必须将元素定义为App.config中的第一个元素。”

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


4
投票

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

希望这可以为其他人提供解决方案,然后再沿着我走的路走下去,这会浪费一两个小时。感叹我们开发人员的生活。有些日子我们在调试时浪费的时间比开发时间多!


3
投票

卸载Oracle客户端驱动程序后,我开始解决这个问题,它删除了我的C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ machine.config!

从另一台计算机复制它解决了这个问题。


3
投票

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

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


2
投票
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="xyz" value="123" />    
  </appSettings>
</configuration>
© www.soinside.com 2019 - 2024. All rights reserved.