Impossibile inizializzare il sistema di configurazione


225

Sono nuovo di Visual Studio. Attualmente sto creando un modulo di accesso.

Ho questo codice

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

Ma ogni volta che provo a digitare il nome utente e la password c'è un errore chiamato Sistema di inizializzazione non riuscito . Mi sto solo chiedendo che tipo di problema sia questo e come potrei risolverlo?

Per favore aiuto.



2
Solo un altro scenario: se stai cercando ConfigurationManager.Appsettings [""], assicurati che <appSettings> sia presente nella configurazione. Altrimenti otterrai questa eccezione
LCJ

1
Questo può accadere anche se hai 2 posizioni per le impostazioni
Lawrence Thurman,

Risposte:


392

Assicurati che il tuo file di configurazione (web.config se web, o app.config se windows) nel tuo progetto inizi come:

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

Si noti che all'interno configurationdell'elemento, il primo figlio deve essere l' configSectionselemento.

Nella nameproprietà on sectionelement, assicurati di sostituire YourProjectNamecon il nome del tuo progetto reale.

Mi è successo che ho creato un servizio web in un progetto di libreria di classi, quindi ho copiato (sovrascritto) il file di configurazione (per portare la configurazione degli endpoint) nella mia app di Windows e ho iniziato ad avere lo stesso problema. L'avevo inavvertitamente rimosso configSections.

ha funzionato per me, spero che sia d'aiuto


79
"all'interno dell'elemento 'configuration', il primo figlio deve essere l'elemento 'configSections' << << questo è stato il punto cruciale per me. Grazie.
demoncodemonkey

7
Solo un altro scenario: se stai cercando ConfigurationManager.Appsettings [""], assicurati che <appSettings> sia presente nella configurazione. Altrimenti otterrai questa eccezione
LCJ

6
configSectionsRisolveva il mio problema in cui esisteva l'elemento ma si trovava successivamente nella parte di app.config. Non posso fare a meno di chiedere perché si è verificato questo errore. Pensavo che non fosse necessario ordinare gli elementi XML.
Tae-Sung Shin,

3
Questo è corretto. ConfigSections dovrebbe essere il primo nodo figlio in, elemento di configurazione.
Umang Desai,

7
Il modo in cui Microsoft ha implementato questa app.config è ritardato !!! Il minimo che potrebbero fare è lanciare un messaggio di errore migliore!
codenamezero

105

Elimina i vecchi file di configurazione da c: \ Users \ nomeutente \ AppData \ Local \ nome app e c: \ Users \ nome utente \ AppData \ Roaming \ nome app e quindi prova a riavviare l'applicazione.


2
Grazie, lavoro. Ma ancora non capisco qual è il problema?
liquide

1
nella cartella locale il file user.config era vuoto. Dopo aver eliminato l'app della cartella locale, inizia a funzionare
Ozgur il

3
Grazie ha funzionato. Ma quale potrebbe essere la ragione di questo errore.
vasuy19

1
Il mio file era pieno di valori bassi (0x00). Ne ho copiato uno funzionante e poi è andato bene
DanW

1
Il mio file di configurazione in questa posizione è stato danneggiato durante un evento di interruzione dell'alimentazione - il file di configurazione che è normalmente XML è stato riempito con byte NUL
mroselli il

19

A volte l'errore si verifica perché Windows crea un duplicato in

C: \ Utenti \ Dati app \ Local \ "Nome app" ...

Basta eliminare questa cartella e il gioco è fatto. Provalo.


2
GRAZIE. Non sono stato in grado di risolvere il mio problema con le stringhe del file delle impostazioni non "raccolte" dalla mia applicazione. Ho ripulito i file di configurazione, rigenerato il file .suo, eliminato tutti i file .settings esistenti e non sono stato ancora in grado di caricare da qualsiasi nuovo file di impostazioni, ma non ho ricevuto alcun errore durante la compilazione. Questo incubo è finalmente finito.
Rachael,

13

Se hai aggiunto le tue sezioni di configurazione personalizzate alle tue App.Config, assicurati di aver definito la sezione <configSections>nell'elemento. Ho aggiunto il mio XML di configurazione, ma ho dimenticato di dichiarare la sezione di configurazione in alto - che ha causato l'eccezione "Impossibile inizializzare il sistema di configurazione" per me.


3
Inoltre, se hai una sezione dichiarata in alto e il nome nella sezione sottostante ha un refuso, otterrai questo errore. Se guardi InnerException dell'eccezione generata, ti dirà quale sezione è il problema.
shindigo,

6

Ho avuto lo stesso problema con una classe MSTest: Marlon Grech nel suo articolo dice "l'elemento deve essere definito come il primo elemento in App.config".

Quindi assicurati che sia il primo elemento sotto l'elemento. Avevo messo AppSettings per primo.


ohh .. mio male: l'hai fatto davvero ma non me ne sono accorto ;-) Grazie per il chiarimento
Kleopatra,

4

So che è già stata data una risposta, ma ho avuto esattamente lo stesso problema nei test delle mie unità. Mi stavo strappando i capelli - aggiungendo una sezione AppSettings e quindi dichiarando la sezione di configurazione come da risposta. Alla fine ho scoperto che avevo già dichiarato una sezione AppSettings più in alto nel mio file di configurazione. Entrambe le sezioni hanno indicato il mio file di impostazioni esterno "appSettings.config" ma il primo elemento appSettings utilizza il file di attributo mentre l'altro ha utilizzato l'attributo configSource . So che la domanda riguardava connectionStrings. Abbastanza sicuro, questo succede se l'elemento appSettings è l'elemento connectionStrings duplicato con attributi diversi.

Spero che questo possa fornire a qualcun altro la soluzione prima di percorrere il sentiero che ho fatto che porta a perdere un'ora o due. sospiro oh la vita di noi sviluppatori. In alcuni giorni perdiamo più ore di debug di quanti ne dedichiamo allo sviluppo!


Bingo. Aveva appSettingsed applicationSettingsentrambi.
SushiGuy

3

Ho iniziato a riscontrare questo problema dopo aver disinstallato Oracle Client Driver e ho rimosso il mio C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ machine.config !

Copiarlo da un altro computer ha risolto il problema.


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

3

Se si dispone di impostazioni con ambito utente, è possibile che sia presente un file user.config da qualche parte nella [Userfolder]\AppData\Local\[ProjectName]cartella.

Se in seguito si rimuovono le impostazioni dell'ambito utente, user.config non verrà rimosso automaticamente e la sua presenza potrebbe causare lo stesso messaggio di errore. L'eliminazione della cartella ha fatto il trucco per me.


1

Wow, ci ho messo un'eternità a capire questo. Per qualche motivo, la modifica dell'attributo [assembly: AssemblyCompany("CompanyName")]a ha AssemblyInfo.csfatto scomparire questo errore. Mi riferivo a un progetto che aveva un valore diverso per l'attributo [assembly: AssemblyCompany("CompanyName")]. Ho fatto in modo che entrambi i progetti avessero lo stesso valore di attributo e funzionasse alla grande!


è un insetto? Non ci si può aspettare che il nome della tua azienda corrisponda a un progetto di terze parti a cui ti riferisci.
Denise Skidmore,

1

Lo stesso problema con me Ho risolto il mio problema rimuovendo verion = "v3.5" da App.config.

Prima

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

Soluzione

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

  <startup>

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

Ecco come utilizzare la versione su

MSDN Support Runtime Element


1

Dopo una lunga ricerca che ho realizzato, questa eccezione ha un'eccezione interna che ti dice esattamente cosa c'è di sbagliato nel tuo file di configurazione


1
Stavo cercando di commentare diverse sezioni della mia app.config e, in via eccezionale, non ho nemmeno guardato all'eccezione interna. E dopo aver visto questa risposta ho scoperto qual era il problema. Grazie.
Sid,

0

Vale la pena notare che se aggiungi cose come stringhe di connessione in app.config, che se aggiungi elementi al di fuori delle sezioni di configurazione definite, non si lamenterà immediatamente, ma quando provi ad accedervi, potresti quindi ottenere gli errori sopra.

Comprimi tutte le sezioni principali e assicurati che non ci siano elementi al di fuori di quelli definiti. Ovvio, quando l'hai effettivamente notato.


0

Nel mio caso, l'unica soluzione era aggiungere anche il riferimento al System.Configurationmio progetto Test.


0

Questo è un po 'stupido, ma per me l'ho risolto facendo un ultimo controllo dal codice sorgente sul mio codice. Penso che ci sia stato un nuovo elemento di configurazione che è stato aggiunto da qualcun altro e che avevo bisogno di sovrascrivere i miei file di configurazione. OP mostra l'errore che avevo ricevuto, che non mi stava davvero indirizzando nella giusta direzione.


0

Anch'io ho affrontato lo stesso problema, ma per caso ho scritto il senza scrivere il, il precedente dovrebbe andare all'interno di questi tag. quindi si è verificato l'errore "Impossibile inizializzare il sistema di configurazione". Spero che possa essere d'aiuto


0

Nel mio caso, ho due configurazioni nel file app.config. Dopo aver eliminato quello nascosto nelle righe di codice, l'app funziona bene.

Quindi, se qualcuno ha lo stesso problema, controlla prima di tutto se hai configurazioni duplicate.


0

Se hai a che fare con un WebJob di Azure, ho dovuto rimuovere quanto segue dopo l'aggiornamento all'ultima versione 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>

Spero che questo ti aiuti.


0

Nel mio caso, all'interno del mio file .edmx avevo eseguito il comando "Aggiorna modello dal database". Questo comando ha aggiunto una stringa di connessione non necessaria al mio file app.config. Ho cancellato quella stringa di connessione e tutto è andato di nuovo bene.


0

Ho risolto il problema utilizzando il codice seguente

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

0

Prova a salvare il file .config come utf-8 se hai dei caratteri "speciali". Questo era il problema nel mio caso di un'applicazione console.


0

Come menzionato da @Flash Gordon nel suo commento, dovrai definire qualsiasi tag personalizzato (come sezione) nel tuo file App.config , sotto <configSections>. Ad esempio, stai lavorando a un progetto di automazione di test con SpecFlow e l'aggiunta di <specFlow>tag, quindi una versione più semplice di App.config sarà simile a questa: inserisci qui la descrizione dell'immagine


0

Ho appena avuto questo ed era perché avevo un <configuration>elemento nidificato all'interno di un <configuration>elemento.


0

Ho riavviato Visual Studio e persino l'intero PC. Ho pulito il progetto, ricostruito ed eliminato il file bin.

Nulla ha aiutato fino a quando non ho cambiato la configurazione da x64 a x86. Ha funzionato su x86 ma quando l'ho cambiato ha funzionato anche!


0

Ho provato tutte le soluzioni sopra cercando di capire perché uno dei miei test unit non riusciva a rilevare la configurazione da un file app.config che è perfetto.

Ho avuto 2 riferimenti allo stesso assembly in questo modo:

riferimento duplicato

file di progetto prima e dopo

La rimozione del riferimento (duplicato) in giallo l'ha risolto per me.

Spero che questo funzioni per qualcun altro, mi ha fatto impazzire per un po '.


0

Soluzione semplice per i progetti .Net Core WinForms / WPF / .Net Standard Class Library

passaggio 1: installazione System.Configuration.ConfigurationManagerda Nuget Manager

passaggio 2: aggiungere un nuovo App.Configfile

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

step3: ottieni il valore

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

Se lo stai chiamando da a, Class Libraryaggiungi il App.Configfile sul tuo Progetto principale.


0

Se hai una sezione personalizzata, devi menzionarla sotto configSections proprio sotto il tag delle configurazioni.

Controlla i tuoi file di trasformazione, assicurati di rimuovere i tag non necessari. Solo la sezione che sta per variare deve essere presente nei file di trasformazione. non menzionare la sezione di configurazione nei file di trasformazione se non necessaria. questo causerebbe anche il problema.

se si verifica un errore di sintassi in machine.config, anche questo errore è previsto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.