配置系统初始化失败

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

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

请帮助。

355805 次浏览

确保您的配置文件(web。Config如果web,或app.config如果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元素。

section元素的name属性中,确保将< >强YourProjectName < / >强替换为实际项目的名称。

它发生在我身上,我在一个类库项目中创建了一个webservice,然后我复制(覆盖)配置文件(为了带来端点配置)到我的windows应用程序,我开始有同样的问题。我无意中删除了configSections

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

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

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

确保这是元素下面的第一个元素。我把AppSettings放在第一位。

如果你已经在App.Config中添加了自己的自定义配置部分,请确保你已经在<configSections>元素中定义了该部分。我添加了我的配置XML,但忘记在上面声明配置部分——这导致异常“配置系统初始化失败”。

如果你有用户范围设置,你也可以有一个用户。config文件在[Userfolder]\AppData\Local\[ProjectName]文件夹中的某处。

如果您稍后删除用户范围设置的用户。Config不会自动被删除,它的存在可能会导致相同的错误消息。删除文件夹对我有用。

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

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

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

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

希望这可以为其他人提供解决方案,以免他们重蹈我的覆辙,浪费一两个小时。叹息哦,我们开发人员的生活。有时候我们在调试上浪费的时间比在开发上还要多!

对象中创建了副本,有时会出现错误

c:\用户\应用数据\本地\"你的应用名称"…

删除这个文件夹就可以了。试一试。

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

值得注意的是,如果你在app.config中添加连接字符串之类的东西,如果你在已定义的配置部分之外添加项目,它不会立即报错,但当你尝试访问它时,你可能会得到上述错误。

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

这有点傻,但对我来说,我通过在我的代码上做一个从源代码控制获取最新信息来解决它。我认为是其他人添加了一些新的配置元素,我需要重写我的配置文件。OP显示了我得到的错误,它并没有真正地将我指向正确的方向。

我也面临同样的问题,但我不小心把 如果不写the,前一个应该放在这个标记中。因此出现了“配置系统初始化失败”错误。 希望这将有助于

同样的问题,我解决了我的问题,从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支持运行时元素

在我的例子中,我在app.config文件中有两个configsections。删除隐藏在代码行后,应用程序工作正常。

所以如果有人有同样的问题,先检查你是否有重复的配置部分。

如果你正在处理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>

希望这能有所帮助。

在我的例子中,在我的.edmx文件中,我运行了“从数据库更新模型”命令。这个命令给我的app.config文件添加了一个不必要的连接字符串。我删除了连接字符串,一切又好了。

我通过使用下面的代码解决了这个问题

   <?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>

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

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

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

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

我重启了Visual studio,甚至是整个电脑。

.我清理了项目,重建了bin文件 直到我将配置从x64更改为x86,才有所帮助。 它在x86上工作,但当我把它改回来时,它也工作了!< / p >

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

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

duplicate reference

project file before and after .

删除(重复)参考在黄色固定它为我。

我希望这对其他人也有用,有段时间我都快疯了。

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

通过Nuget Manager安装System.Configuration.ConfigurationManager

添加一个新的App.Config文件

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

步骤3:获取值

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

如果你从Class Library调用它,那么在你的主项目中添加App.Config文件。

如果你有一个自定义的section,你需要在configSections下面的configurations标签下面提到它。

请检查您的转换文件,确保您删除了不必要的标签。只有将要变化的部分需要在转换文件中。如果不需要,不要在转换文件中提到配置部分。这也会引起问题。

如果您在机器中有任何语法错误。配置时,也会出现此错误。

我还得到了

'System.Configuration.ConfigurationErrorsException' in System.Configuration.dll

如果你有窗口检查斜杠/我正在与一个在linux工作的人的项目一起工作,所以他已经反转了它们。