57 votes

ConfigurationManager.AppSettings devient nul ?

Je ne m'en suis pas rendu compte : j'avais un web.config dans une bibliothèque de classe séparée et que je lisais les paramètres de l'application web.config depuis une autre application web.

J'utilise VS2010 target framework 3.5.

Je ne sais pas ce qui ne va pas ici mais j'obtiens null quand j'essaie d'obtenir ConfigurationManager.AppSettings["StoreId"];

private string _storeid = GetStoreId;

public static string GetStoreId
{
    get
    {
        return ConfigurationManager.AppSettings["StoreId"];
    }
}

web.config :

<appSettings>
    <add key="StoreId" value="123" />
</appSettings>

0 votes

C'est dans votre application principale ? Dans une bibliothèque de classes ? Dans une application web ou un site web ?

0 votes

Bonjour @Nick, pouvez-vous réviser la bonne réponse ? Cela fait 7 ans et j'ai posté une meilleure solution.

2voto

user1573670 Points 46

Les paramètres de l'application sont chargés dans ConfigurationManager.AppSettings, mais les paramètres de l'utilisateur (dans les paramètres des propriétés de votre projet) ne le sont pas.

2voto

GaTechThomas Points 523

Dans Visual Studio, cliquez avec le bouton droit de la souris sur le fichier de configuration, sélectionnez Propriétés, puis changez l'option "Copy to Output Directory" en "Copy always" ou "Copy if newer".

Vous pouvez également ajouter manuellement la section suivante en tant qu'enfant de l'élément dans votre fichier .csproj (celle-ci concerne l'élément "Copy always" pour le fichier "App.config") :

  <ItemGroup>
    <None Update="App.config">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>

1voto

Jeff Kaminski Points 11

J'ai essayé toutes ces solutions mais aucune n'a fonctionné pour moi. J'ai essayé d'utiliser un fichier 'web.config'. Tout était nommé correctement et les fichiers se trouvaient au bon endroit, mais cela ne fonctionnait pas. J'ai alors décidé de renommer mon fichier "web.config" en "app.config" et, comme ça, ça a marché.

Si vous rencontrez ce problème avec un fichier 'web.config', veillez à le renommer en 'app.config'.

0voto

bobbins Points 21

Cela m'est arrivé lorsque je testais une bibliothèque de classe (.dll). Ils étaient tous deux dans le même projet, mais l'App.config de la bibliothèque contenait les paramètres dont j'avais besoin. L'application que j'avais écrite pour tester avait besoin de ces paramètres parce que il dirigeait la bibliothèque.

0voto

thatOneGuy Points 5428

J'ai eu ce problème en copiant un projet depuis l'explorateur de fichiers et en renommant le projet. Cela a copié le dossier Debug et comme je n'avais pas réglé l'option "Copier si plus récent", cela n'a pas écrasé l'ancien fichier App.config.

Il suffit de supprimer le dossier Debug et de le reconstruire. J'espère que cela aidera quelqu'un.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X