Konfigurationssystem konnte nicht initialisiert werden

225

Ich bin neu in Visual Studio. Ich erstelle gerade ein Anmeldeformular.

Ich habe diesen Code.

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

Aber wenn ich versuche, den Benutzernamen und das Passwort einzugeben, gibt es einen Fehler namens Konfigurationssystem konnte nicht initialisiert werden . Ich frage mich nur, was für ein Problem das ist und wie ich das lösen könnte.

Bitte helfen Sie.

Sean
quelle
2
Nur ein weiteres Szenario - Wenn Sie nach ConfigurationManager.Appsettings [""] suchen, stellen Sie sicher, dass die <appSettings> in der Konfiguration vorhanden sind. Andernfalls erhalten Sie diese Ausnahme
LCJ
1
Dies kann auch passieren, wenn Sie 2 Standorte für Appsettings haben
Lawrence Thurman

Antworten:

392

Stellen Sie sicher, dass Ihre Konfigurationsdatei (web.config wenn web oder app.config wenn Windows) in Ihrem Projekt wie folgt beginnt:

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

Beachten Sie, dass innerhalb des configurationElements das erste untergeordnete configSectionsElement das Element sein muss.

Stellen Sie in der nameEigenschaft auf sectionElement sicher, dass Sie durch YourProjectNameden Namen Ihres tatsächlichen Projekts ersetzen .

Es ist mir passiert, dass ich einen Webservice in einem Klassenbibliotheksprojekt erstellt habe, dann die Konfigurationsdatei (um die Endpunktkonfiguration zu übernehmen) in meine Windows-App kopiert (überschrieben) und das gleiche Problem aufgetreten bin. Ich hatte versehentlich entfernt configSections.

es hat bei mir funktioniert, hoffe es hilft

feluco79
quelle
79
"Innerhalb des Konfigurationselements muss das erste untergeordnete Element das Element" configSections "sein." << Dies war der entscheidende Punkt für mich. Vielen Dank.
Demoncodemonkey
7
Nur ein weiteres Szenario - Wenn Sie nach ConfigurationManager.Appsettings [""] suchen, stellen Sie sicher, dass die <appSettings> in der Konfiguration vorhanden sind. Andernfalls erhalten Sie diese Ausnahme
LCJ
6
Es hat mein Problem behoben, bei dem das configSectionsElement vorhanden war, sich aber später in der app.config befand. Ich kann nicht anders als zu fragen, warum dieser Fehler passiert ist. Ich dachte, XML-Elemente müssen nicht bestellt werden.
Tae-Sung Shin
3
Das ist richtig. Die configSections sollten der erste untergeordnete Knoten unter dem Konfigurationselement sein.
Umang Desai
7
Die Art und Weise, wie Microsoft diese app.config implementiert hat, ist verzögert !!! Das Mindeste, was sie tun können, ist eine bessere Fehlermeldung zu werfen!
Codenamezero
105

Löschen Sie alte Konfigurationsdateien aus c: \ Benutzer \ Benutzername \ AppData \ Local \ Anwendungsname und c: \ Benutzer \ Benutzername \ AppData \ Roaming \ Anwendungsname und versuchen Sie dann, Ihre Anwendung neu zu starten.

Jarek
quelle
2
Danke, arbeiten. Aber ich verstehe immer noch nicht, was das Problem ist?
Flüssigkeit
1
unter dem lokalen Ordner user.config war die Datei leer. Nach dem Löschen der lokalen Ordner App beginnen zu arbeiten
Ozgur
3
Danke, es hat funktioniert. Aber was könnte der Grund für diesen Fehler sein.
Vasuy19
1
Meine Datei wurde mit niedrigen Werten (0x00) gefüllt. Ich habe ein funktionierendes kopiert und dann war es in Ordnung
DanW
1
Meine Konfigurationsdatei an diesem Speicherort wurde während eines Stromausfallereignisses beschädigt - die Konfigurationsdatei, die normalerweise XML ist, wurde mit NUL-Bytes gefüllt
mroselli
19

Manchmal tritt der Fehler auf, weil ein Fenster ein Duplikat in der erstellt

C: \ Benutzer \ App-Daten \ Lokal \ "Sie App-Name" ...

Löschen Sie einfach diesen Ordner und fertig. Versuch es.

Ashu Gupta
quelle
2
DANKE. Ich konnte mein Problem nicht beheben, da die Zeichenfolgen der Einstellungsdatei von meiner Anwendung nicht "aufgenommen" wurden. Ich habe die Konfigurationsdateien bereinigt, die .suo-Datei neu generiert, alle vorhandenen .settings-Dateien gelöscht und konnte immer noch keine neue Einstellungsdatei laden, habe aber beim Erstellen keine Fehler erhalten. Dieser Albtraum hat endlich ein Ende.
Rachael
13

Wenn Sie Ihren eigenen benutzerdefinierten Konfigurationsabschnitten hinzugefügt haben App.Config, stellen Sie sicher, dass Sie den Abschnitt im <configSections>Element definiert haben . Ich habe mein Konfigurations-XML hinzugefügt, aber vergessen, den Konfigurationsabschnitt oben zu deklarieren - was für mich die Ausnahme "Konfigurationssystem konnte nicht initialisiert werden" verursachte.

Flash Gordon
quelle
3
Außerdem - wenn Sie einen Abschnitt oben deklariert haben und der Name im Abschnitt unten einen Tippfehler enthält, wird dieser Fehler angezeigt. Wenn Sie sich die InnerException der ausgelösten Ausnahme ansehen, erfahren Sie, welcher Abschnitt das Problem ist.
Shindigo
6

Ich hatte das gleiche Problem mit einer MSTest-Klasse: Marlon Grech sagt in seinem Artikel : "Das Element muss als erstes Element in der App.config definiert werden."

Stellen Sie also sicher, dass dies das erste Element unter dem Element ist. Ich hatte AppSettings an die erste Stelle gesetzt.

Ausgerichtet
quelle
ohh .. mein schlechtes: du hast es tatsächlich getan, aber ich habe es nicht bemerkt ;-) Danke für die Klarstellung
kleopatra
4

Ich weiß, dass dies bereits beantwortet wurde, aber ich hatte genau das gleiche Problem in meinen Unit-Tests. Ich riss mir die Haare aus - fügte einen Abschnitt "appSettings" hinzu und deklarierte dann den Konfigurationsabschnitt gemäß der Antwort. Schließlich fand ich heraus, dass ich bereits einen Abschnitt appSettings weiter oben in meiner Konfigurationsdatei deklariert hatte. Beide Abschnitte zeigten auf meine externe Einstellungsdatei "appSettings.config", aber das erste appSettings-Element verwendete die Attributdatei , während das andere das Attribut configSource verwendete . Ich weiß, die Frage betraf die connectionStrings. Dies geschieht natürlich, wenn das appSettings-Element das connectionStrings-Element ist, das mit verschiedenen Attributen dupliziert wird.

Hoffentlich kann dies jemand anderem die Lösung bieten, bevor er den von mir eingeschlagenen Weg einschlägt, was dazu führt, dass ein oder zwei Stunden verschwendet werden. seufz oh das Leben von uns Entwicklern. Wir verschwenden an manchen Tagen mehr Stunden mit dem Debuggen als mit der Entwicklung!

csharpforevermore
quelle
Bingo. Hatte appSettingsund applicationSettingsbeides.
SushiGuy
3

Ich habe dieses Problem nach der Deinstallation von Oracle Client Drivers festgestellt und mein C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ machine.config entfernt !

Durch Kopieren von einem anderen Computer wurde das Problem behoben.

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

Wenn Sie Einstellungen für den Benutzerbereich haben, befindet sich möglicherweise auch eine Datei user.config irgendwo im [Userfolder]\AppData\Local\[ProjectName]Ordner.

Wenn Sie später die Einstellungen für den Benutzerbereich entfernen, wird die Datei user.config nicht automatisch entfernt, und ihre Anwesenheit kann dieselbe Fehlermeldung verursachen. Das Löschen des Ordners hat den Trick für mich getan.

Wuolennaj
quelle
1

Wow, ich habe ewig gebraucht, um das herauszufinden. Aus irgendeinem Grund hat das Ändern des Attributs [assembly: AssemblyCompany("CompanyName")]bei AssemblyInfo.csdiesen Fehler verschwinden lassen. Ich habe auf ein Projekt verwiesen, das einen anderen Wert für das Attribut hatte [assembly: AssemblyCompany("CompanyName")]. Ich habe sichergestellt, dass beide Projekte den gleichen Attributwert haben und es hat super funktioniert!

Tono Nam
quelle
Ist das ein Fehler? Es ist kaum zu erwarten, dass Ihr Firmenname mit einem Drittanbieterprojekt übereinstimmt, auf das Sie gerade verweisen.
Denise Skidmore
1

Gleiches Problem mit mir Ich habe mein Problem gelöst, indem ich verion = "v3.5" aus App.config entfernt habe.

Vor

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

Lösung

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

  <startup>

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

Hier erfahren Sie, wie Sie die Version verwenden

MSDN Support Runtime Element


quelle
0

Es ist erwähnenswert, dass, wenn Sie Dinge wie Verbindungszeichenfolgen in die app.config einfügen, wenn Sie Elemente außerhalb der definierten Konfigurationsabschnitte hinzufügen, dies nicht sofort beanstandet wird, sondern wenn Sie versuchen, darauf zuzugreifen, dies möglicherweise erhalten die oben genannten Fehler.

Reduzieren Sie alle wichtigen Abschnitte und stellen Sie sicher, dass sich keine Elemente außerhalb der definierten befinden. Offensichtlich, wenn Sie es tatsächlich entdeckt haben.

Anthony Horne
quelle
0

In meinem Fall bestand die einzige Lösung darin, den Verweis auch System.Configurationin meinem Testprojekt hinzuzufügen .

Jose Santos
quelle
0

Das ist ein bisschen dumm, aber für mich habe ich es behoben, indem ich eine neueste Version der Quellcodeverwaltung für meinen Code erstellt habe. Ich glaube, es gab ein neues Konfigurationselement, das von jemand anderem hinzugefügt wurde, und ich musste meine Konfigurationsdateien überschreiben. OP zeigt den Fehler, den ich bekommen habe und der mich nicht wirklich in die richtige Richtung zeigte.

DLeh
quelle
0

Auch ich hatte das gleiche Problem, aber aus Versehen habe ich das geschrieben, ohne das zu schreiben, das vorherige sollte in diese Tags gehen. Daher trat der Fehler "Konfigurationssystem konnte nicht initialisiert werden" auf. Hoffe es wird helfen

Priyabrata biswal
quelle
0

In meinem Fall habe ich zwei Konfigurationen in der Datei app.config. Nach dem Löschen der in den Codezeilen versteckten App funktioniert die App einwandfrei.

Wenn also jemand das gleiche Problem hat, überprüfen Sie zuerst, ob Sie doppelte Konfigurationen haben.

oopsdazie
quelle
0

Wenn Sie mit einem Azure WebJob zu tun haben, musste ich nach dem Upgrade auf die neueste Version 4.6.1 Folgendes entfernen.

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

Hoffe das hilft.

Dave Friedel
quelle
0

In meinem Fall hatte ich in meiner EDMX-Datei den Befehl 'Modell aus Datenbank aktualisieren' ausgeführt. Dieser Befehl hat meiner Datei app.config eine unnötige Verbindungszeichenfolge hinzugefügt. Ich habe diese Verbindungszeichenfolge gelöscht und alles war wieder gut.

Colin
quelle
0

Ich habe das Problem mit dem folgenden Code gelöst

   <?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>
Sumant Singh
quelle
0

Versuchen Sie, die .config-Datei als utf-8 zu speichern, wenn Sie einige "Sonderzeichen" enthalten. Das war das Problem in meinem Fall einer Konsolenanwendung.

lukalev
quelle
0

Wie @Flash Gordon in seinem Kommentar erwähnt hat, müssen Sie jedes benutzerdefinierte Tag (als Abschnitt) in Ihrer App.config- Datei unter definieren <configSections>. Wenn Sie beispielsweise an einem Testautomatisierungsprojekt mit SpecFlow arbeiten und ein <specFlow>Tag hinzufügen , sieht eine einfachste Version von App.config folgendermaßen aus: Geben Sie hier die Bildbeschreibung ein

DenisD
quelle
0

Ich hatte dies nur und es war, weil ich ein <configuration>Element in einem Element verschachtelt hatte <configuration>.

Mike Cheel
quelle
0

Nach einer langen Suche wurde mir klar, dass diese Ausnahme eine innere Ausnahme hat, die Ihnen genau sagt, was mit Ihrer Konfigurationsdatei nicht stimmt

Gerrie Pretorius
quelle
0

Ich habe Visual Studio und sogar den gesamten PC neu gestartet. Ich habe das Projekt bereinigt, neu erstellt und die Bin-Datei gelöscht.

Nichts hat geholfen, bis ich die Konfiguration von x64 auf x86 geändert habe. Es hat auf x86 funktioniert, aber als ich es wieder geändert habe, hat es auch funktioniert!

Ali123
quelle
0

Ich habe alle oben genannten Lösungen ausprobiert, um herauszufinden, warum bei einem meiner Komponententests die Konfiguration nicht aus einer perfekten Datei app.config abgerufen werden konnte.

Ich hatte 2 Verweise auf dieselbe Versammlung wie folgt:

doppelte Referenz

Projektdatei vorher und nachher

Das Entfernen der (doppelten) Referenz in Gelb hat es für mich behoben.

Ich hoffe, das funktioniert für jemand anderen, es hat mich für eine Weile verrückt gemacht.

ElMatador
quelle
0

Einfache Lösung für .Net Core WinForms / WPF / .Net Standard Class Library-Projekte

Schritt 1: Installieren System.Configuration.ConfigurationManagervon Nuget - Manager

Schritt 2: Fügen Sie eine neue App.ConfigDatei hinzu

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

Schritt 3: Holen Sie sich den Wert

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

Wenn Sie es von a aufrufen, Class Libraryfügen Sie die App.ConfigDatei zu Ihrem Hauptprojekt hinzu.

fatihyildizhan
quelle
0

Wenn Sie einen benutzerdefinierten Abschnitt haben, müssen Sie diesen unter configSections direkt unter dem Konfigurations-Tag erwähnen.

Bitte überprüfen Sie Ihre Transformationsdateien und stellen Sie sicher, dass Sie die unnötigen Tags entfernen. Nur der Abschnitt, der variieren wird, muss in Transformationsdateien vorhanden sein. Erwähnen Sie den Konfigurationsabschnitt nicht in den Transformationsdateien, wenn er nicht benötigt wird. Dies würde auch das Problem verursachen.

Wenn in machine.config ein Syntaxfehler vorliegt, wird auch dieser Fehler erwartet.

Extraktor
quelle