配置系统初始化失败

时间:2011-06-22 07:06:19

标签: c# mysql visual-studio-2010 visual-studio login

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

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

请帮忙。

24 个答案:

答案 0 :(得分:369)

确保项目中的配置文件(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 :(得分:97)

c:\ Users \ username \ AppData \ Local \ appname c:\ Users \ username \ AppData \ Roaming \ appname 删除旧配置文件,然后尝试重启你的申请。

答案 2 :(得分:18)

有时会出现错误,因为Windows会在

中创建副本
  

C:\ Users \ App Data \ Local \&#34;您的应用名称&#34; ...

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

答案 3 :(得分:11)

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

答案 4 :(得分:6)

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

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

答案 5 :(得分:4)

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

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

答案 6 :(得分:3)

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

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

答案 7 :(得分:3)

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

答案 8 :(得分:3)

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

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

答案 9 :(得分:1)

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

步骤1:通过Nuget Manager安装<!-- <button (click)="getAreaCodes2()">GET /productss</button> --> <ul> <li *ngFor="let product of products" > -- id: {{product.id}} -- name: {{product.title}} -- base: {{product.base}} </li> </ul> <div class="mat-elevation-z8"> <table mat-table [dataSource]="dataSource"> <!-- Position Column --> <ng-container matColumnDef="standort"> <th mat-header-cell *matHeaderCellDef> Standort </th> <td mat-cell *matCellDef="let element"> {{element.title}} </td> </ng-container> <!-- Name Column --> <ng-container matColumnDef="stammnummer"> <th mat-header-cell *matHeaderCellDef> Stammnummer </th> <td mat-cell *matCellDef="let element"> {{element.title}} </td> </ng-container> <!-- Weight Column --> <ng-container matColumnDef="bereich"> <th mat-header-cell *matHeaderCellDef> Bereich </th> <td mat-cell *matCellDef="let element"> {{element.title}} </td> </ng-container> <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> </table> <mat-paginator [pageSizeOptions]="[5, 10, 20]" showFirstLastButtons></mat-paginator> </div>

步骤2:添加新的System.Configuration.ConfigurationManager文件

App.Config

第3步:获取值

<?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 Library文件添加到您的主项目中。

答案 10 :(得分:1)

与我同样的问题我通过删除verion =&#34; v3.5&#34;解决了我的问题。来自App.config。

<强>之前

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

答案 11 :(得分:1)

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

答案 12 :(得分:0)

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

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

答案 13 :(得分:0)

这有点愚蠢,但对我来说,我通过从源代码控制中获取最新代码来修复它。我认为有一些新的配置元素是由其他人添加的,我需要覆盖我的配置文件。 OP显示我得到的错误,这并没有真正指向我正确的方向。

答案 14 :(得分:0)

我也遇到了同样的问题,但不小心写了 没有写入,前一个应该进入这个标签。因此,“配置系统无法初始化”错误出现了。 希望它会有所帮助

答案 15 :(得分:0)

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

答案 16 :(得分:0)

在我的情况下,我在app.config文件中有两个配置。删除隐藏在代码行中的那个后,该应用程序正常工作。

因此,如果有人遇到同样的问题,请先检查您是否有重复的配置。

答案 17 :(得分:0)

就我而言,在我的.edmx文件中,我运行了“从数据库更新模型”命令。此命令为我的app.config文件添加了一个不必要的连接字符串。我删除了那个连接字符串,一切都很好。

答案 18 :(得分: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>

答案 19 :(得分:0)

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

答案 20 :(得分:0)

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

答案 21 :(得分:0)

我刚遇到这个问题是因为我有一个<configuration>元素嵌套在<configuration>元素内。

答案 22 :(得分:0)

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

答案 23 :(得分:0)

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

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