Le système de configuration n'a pas pu s'initialiser

225

Je suis nouveau dans Visual Studio. Je crée actuellement un formulaire de connexion.

J'ai ce 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);
}

Mais chaque fois que j'essaie de taper le nom d'utilisateur et le mot de passe, il y a une erreur appelée Système de configuration n'a pas réussi à s'initialiser . Je me demande juste quel genre de problème est-ce et comment pourrais-je le résoudre?

Veuillez aider.

sean
la source
2
Juste un autre scénario - Si vous recherchez ConfigurationManager.Appsettings [""], assurez-vous que <appSettings> est présent dans la configuration. Sinon, vous obtiendrez cette exception
LCJ
1
Cela peut également se produire si vous avez 2 emplacements pour les applications
Lawrence Thurman

Réponses:

392

Assurez-vous que votre fichier de configuration (web.config si web, ou app.config si windows) dans votre projet commence comme:

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

Notez qu'à l'intérieur de l' configurationélément, le premier enfant doit être l' configSectionsélément.

Dans la namepropriété on sectionelement, assurez-vous de remplacerYourProjectName par le nom de votre projet réel.

Il m'est arrivé de créer un service Web dans un projet de bibliothèque de classes, puis j'ai copié (écrasé) le fichier de configuration (afin d'apporter la configuration des points de terminaison) à mon application Windows et j'ai commencé à avoir le même problème. Je l'avais retiré par inadvertance configSections.

cela a fonctionné pour moi, j'espère que cela aide

feluco79
la source
79
"à l'intérieur de l'élément 'configuration', le premier enfant doit être l'élément 'configSections'" << c'était le point crucial pour moi. Merci.
demoncodemonkey
7
Juste un autre scénario - Si vous recherchez ConfigurationManager.Appsettings [""], assurez-vous que <appSettings> est présent dans la configuration. Sinon, vous obtiendrez cette exception
LCJ
6
Il a résolu mon problème là où l' configSectionsélément existait mais se trouvait plus tard dans la partie app.config. Je ne peux pas m'empêcher de demander pourquoi cette erreur s'est produite. Je pensais que les éléments XML n'avaient pas besoin d'être commandés.
Tae-Sung Shin
3
C'est correct. Les configSections doivent être le premier nœud enfant sous, élément de configuration.
Umang Desai
7
La façon dont Microsoft a implémenté ce fichier app.config est retardée !!! Le moins qu'ils pourraient faire est de lancer un meilleur message d'erreur!
codenamezero
105

Supprimez les anciens fichiers de configuration de c: \ Users \ username \ AppData \ Local \ appname et c: \ Users \ username \ AppData \ Roaming \ appname , puis essayez de redémarrer votre application.

jarek
la source
2
Merci de travailler. Mais je ne comprends toujours pas quel est le problème?
liquide
1
dans le dossier local, le fichier user.config était vide. Après avoir supprimé l'application de dossier local, commencez à fonctionner
Ozgur
3
Merci ça a marché. Mais quelle pourrait être la raison de cette erreur.
vasuy19
1
Mon fichier était rempli de valeurs faibles (0x00). J'en ai copié un qui fonctionnait et ensuite ça allait
DanW
1
Mon fichier de configuration à cet emplacement a été corrompu lors d'un événement de panne de courant - le fichier de configuration qui est normalement XML a été rempli d'octets NUL
mroselli
19

Parfois, l'erreur se produit car une fenêtre crée un doublon dans le

C: \ Users \ App Data \ Local \ "You App Name" ...

Supprimez simplement ce dossier et c'est fait. essayez-le.

Ashu Gupta
la source
2
MERCI. Je n'ai pas pu résoudre mon problème avec les chaînes de fichiers de paramètres qui n'étaient pas "récupérées" par mon application. J'ai nettoyé les fichiers de configuration, régénéré le fichier .suo, supprimé tous les fichiers .settings existants et je n'ai toujours pas pu charger à partir d'un nouveau fichier de paramètres, mais je n'ai reçu aucune erreur lors de la construction. Ce cauchemar a finalement pris fin.
Rachael
13

Si vous avez ajouté vos propres sections de configuration personnalisées à votre App.Config, assurez-vous d'avoir défini la section dans l' <configSections>élément. J'ai ajouté le XML de ma configuration mais j'ai oublié de déclarer la section de configuration en haut - ce qui a provoqué pour moi l'exception "Le système de configuration n'a pas pu s'initialiser".

Flash Gordon
la source
3
Aussi - si vous avez une section déclarée en haut et que le nom dans la section ci-dessous a une faute de frappe, vous obtiendrez cette erreur. Si vous regardez l'exception InnerException de l'exception levée, il vous indiquera quelle section est le problème.
shindigo
6

J'ai eu ce même problème avec une classe MSTest: Marlon Grech dans son article dit "l'élément doit être défini comme le premier élément dans App.config."

Assurez-vous donc que c'est le premier élément sous l'élément. J'avais mis AppSettings en premier.

Aligné
la source
ohh .. ma mauvaise: vous avez bien fait mais je n'ai pas remarqué ;-) Merci pour la clarification
kleopatra
4

Je sais que cela a déjà été répondu, mais j'ai eu exactement le même problème lors de mes tests unitaires. J'arrachais mes cheveux - en ajoutant une section appSettings, puis en déclarant la section de configuration selon la réponse. Enfin découvert que j'avais déjà déclaré une section appSettings plus haut dans mon fichier de configuration. Les deux sections pointaient vers mon fichier de paramètres externes "appSettings.config" mais le premier élément appSettings utilisant le fichier d' attributs tandis que l'autre utilisait l'attribut configSource . Je sais que la question portait sur les chaînes de connexion. Effectivement, cela se produit si l'élément appSettings est l'élément connectionStrings en cours de duplication avec différents attributs.

J'espère que cela peut fournir à quelqu'un d'autre la solution avant de s'engager sur le chemin que j'ai suivi, ce qui conduit à perdre une heure ou deux. soupire oh la vie de nous les développeurs. Nous perdons plus d'heures quelques jours de débogage que nous passons à développer!

csharpforevermore
la source
Bingo. Eu appSettingset les applicationSettingsdeux.
SushiGuy
3

J'ai commencé à obtenir ce problème après avoir désinstallé les pilotes clients Oracle et il a supprimé mon C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ machine.config !

La copie à partir d'un autre ordinateur a résolu le problème.

Jeremy Thompson
la source
3
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="xyz" value="123" />    
  </appSettings>
</configuration>
Lénine Edwin
la source
3

Si vous avez des paramètres de portée utilisateur, vous pouvez également avoir un fichier user.config quelque part dans le [Userfolder]\AppData\Local\[ProjectName]dossier.

Si vous supprimez ultérieurement les paramètres de portée utilisateur, user.config ne sera pas automatiquement supprimé, et sa présence peut provoquer le même message d'erreur. La suppression du dossier a fait l'affaire pour moi.

Wuolennaj
la source
1

Wow, il m'a fallu une éternité pour comprendre celui-ci. Pour une raison quelconque, la modification de l'attribut [assembly: AssemblyCompany("CompanyName")]at a AssemblyInfo.csfait disparaître cette erreur. Je faisais référence à un projet qui avait une valeur différente pour l'attribut [assembly: AssemblyCompany("CompanyName")]. Je me suis assuré que les deux projets avaient la même valeur d'attribut et cela a très bien fonctionné!

Tono Nam
la source
Est-ce un bug? On ne peut guère s'attendre à ce que le nom de votre entreprise corresponde à un projet tiers auquel vous vous référez.
Denise Skidmore
1

Même problème avec moi, j'ai résolu mon problème en supprimant verion = "v3.5" d'App.config.

Avant

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

Solution

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

  <startup>

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

Voici comment utiliser la version sur

Élément d'exécution du support MSDN


la source
1

Après une longue recherche, j'ai réalisé que cette exception a une exception interne qui vous indique exactement ce qui ne va pas avec votre fichier de configuration

Gerrie Pretorius
la source
1
J'essayais de commenter-décommenter différentes sections de mon app.config et, sur exception, je n'ai même pas regardé l'exception interne. Et après avoir vu cette réponse, j'ai trouvé quel était le problème. Merci.
Sid
1

Solution facile pour les projets de bibliothèque de classes standard .Net Core WinForms / WPF / .Net

étape 1: installation System.Configuration.ConfigurationManagerpar Nuget Manager

étape 2: ajouter un nouveau App.Configfichier

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

étape3: obtenir la valeur

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

Si vous l'appelez depuis un, Class Libraryajoutez le App.Configfichier à votre projet principal.

fatihyildizhan
la source
0

Il convient de noter que si vous ajoutez des éléments tels que des chaînes de connexion dans app.config, que si vous ajoutez des éléments en dehors des sections de configuration définies, il ne se plaindra pas immédiatement, mais lorsque vous essayez d'y accéder, vous pouvez alors obtenir les erreurs ci-dessus.

Réduisez toutes les sections principales et assurez-vous qu'il n'y a pas d'éléments en dehors de ceux définis. Évidemment, quand vous l'avez repéré.

Anthony Horne
la source
0

Dans mon cas, la seule solution était d'ajouter la référence au System.Configurationdans mon projet de test également.

Jose Santos
la source
0

C'est un peu stupide, mais pour moi, je l'ai corrigé en faisant une dernière version du contrôle de code source sur mon code. Je pense qu'il y avait un nouvel élément de configuration qui a été ajouté par quelqu'un d'autre, et j'avais besoin d'écraser mes fichiers de configuration. OP montre l'erreur que j'ai eue, qui ne me dirigeait pas vraiment dans la bonne direction.

DLeh
la source
0

Moi aussi, j'ai été confronté au même problème, mais accidentellement j'ai écrit le sans écrire le, le précédent devrait aller à l'intérieur de ces balises. ainsi l'erreur «Configuration System Failed to Initialize» s'est produite. J'espère que cela vous aidera

Priyabrata biswal
la source
0

Dans mon cas, j'ai deux configurations dans le fichier app.config. Après avoir supprimé celui qui se cache dans les lignes de code, l'application fonctionne correctement.

Donc, pour quelqu'un qui a le même problème, vérifiez d'abord si vous avez des configurations en double.

oopsdazie
la source
0

Si vous avez affaire à un Azure WebJob - j'ai dû supprimer les éléments suivants après la mise à niveau vers la dernière 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>

J'espère que cela t'aides.

Dave Friedel
la source
0

Dans mon cas, dans mon fichier .edmx, j'avais exécuté la commande «Mettre à jour le modèle à partir de la base de données». Cette commande a ajouté une chaîne de connexion inutile à mon fichier app.config. J'ai supprimé cette chaîne de connexion et tout s'est à nouveau bien passé.

Colin
la source
0

J'ai résolu le problème en utilisant le code ci-dessous

   <?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
la source
0

Essayez d'enregistrer le fichier .config sous utf-8 si vous avez des caractères "spéciaux" dedans. C'était le problème dans mon cas d'une application console.

lukalev
la source
0

Comme @Flash Gordon l'a mentionné dans son commentaire, vous devrez définir n'importe quelle balise personnalisée (en tant que section) dans votre fichier App.config , sous <configSections>. Par exemple, vous travaillez sur un projet d'automatisation de test avec SpecFlow et l'ajout d'une <specFlow>balise, alors une version la plus simple d'App.config ressemblera à ceci: entrez la description de l'image ici

DenisD
la source
0

Je viens d'avoir cela et c'est parce que j'avais un <configuration>élément imbriqué à l'intérieur d'un <configuration>élément.

Mike Cheel
la source
0

J'ai redémarré Visual studio et même tout le PC. J'ai nettoyé le projet, reconstruit et supprimé le fichier bin.

Rien n'a aidé jusqu'à ce que je change la configuration de x64 à x86. Cela a fonctionné sur x86 mais quand je l'ai changé, cela a aussi fonctionné!

Ali123
la source
0

J'ai essayé toutes les solutions ci-dessus en essayant de comprendre pourquoi l'un de mes tests unitaires n'a pas réussi à récupérer la configuration à partir d'un fichier app.config qui est parfait.

J'avais 2 références au même assemblage comme ceci:

référence en double

dossier de projet avant et après

La suppression de la référence (en double) en jaune l'a corrigée pour moi.

J'espère que cela fonctionne pour quelqu'un d'autre, cela m'a rendu fou pendant un certain temps.

ElMatador
la source
0

Si vous avez une section personnalisée, vous devez le mentionner sous configSections juste en dessous de la balise de configurations.

Veuillez vérifier vos fichiers de transformation, assurez-vous de supprimer les balises inutiles. Seule la section qui va varier doit être présente dans les fichiers de transformation. ne mentionnez pas la section config dans les fichiers de transformation si vous n'en avez pas besoin. cela causerait également le problème.

si vous avez une erreur de syntaxe dans machine.config, cette erreur est également attendue.

extracteur
la source