web-dev-qa-db-fra.com

ConfigurationManager.AppSettings devient null?

Je ne savais pas que: "avait un fichier web.config dans une bibliothèque de classes séparée et" lisais le paramètre de l'application web.config à partir d'une application Web différente.

J'utilise le framework cible VS2010 3.5

Je ne sais pas ce qui ne va pas ici, mais j'obtiens null lorsque 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>
26
Nick Kahn

Le code que vous avez posté ci-dessus utilise-t-il une bibliothèque de classes distincte de votre bibliothèque asp.net principale?

Si vous avez ajouté un app.config à cette bibliothèque avec les paramètres indiqués ci-dessus, le ConfigurationManager ne lit pas le bon fichier, car il se réfère au fichier web.config de votre bibliothèque asp.net.

29
MrEyes

Si vous êtes UNIT TESTING il vous faut UNE COPIE du APP.CONFIG à l'intérieur du UNIT TEST PROJECT

30
Ben

Je sais que c'est vieux mais je reviens toujours ici :( 

La cause habituelle de ceci est due au contexte. 

Supposons que vous ayez une solution avec un projet de complément VSTO et un projet de bibliothèque de classes. Si App.Config se trouve dans la bibliothèque de classes, il ne fonctionnera pas car le contexte de l'application en cours d'exécution est le projet de complément VSTO. Pour lire les valeurs de la configuration, vous devez déplacer le fichier de configuration dans le projet avec le contexte.

Si vous ne connaissez pas bien VSTO, prétendez que j'ai écrit un projet ASP.Net et app.config à web.config. 

Solution

Une solution astucieuse consiste à ajouter des raccourcis de fichier de configuration dans d'autres projets afin de ne mettre à jour qu'un fichier: enter image description here

Cela ressemble au partage de fichiers d'assemblage conformément à la réponse n ° 2: https://stackoverflow.com/a/15319582/495455

12
Jeremy Thompson

et:

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

se trouve dans le fichier web.config de votre application ASP.NET et non dans un fichier app.config que vous avez ajouté à votre projet de bibliothèque de classes dans Visual Studio, n'est-ce pas? Vous ne pouvez probablement pas obtenir null si c'est le cas. Si vous avez ajouté cela à un app.config de votre projet de bibliothèque de classes dans Visual Studio, obtenir la valeur null est un comportement parfaitement normal.

6
Darin Dimitrov

Disclaimer;) Ce message n'est pas à répondre à l'OP car il est trop tard mais il serait certainement utile d'aider les lecteurs qui se retrouvent sur cette page.

Problème rencontré: ConfigurationManager.AppSettings["uName"] renvoyant null dans mon projet api web C #. 

Les choses de base que j'ai vérifiées:

1) Dans le code ConfigurationManager.AppSettings["uName"], j'utilisais la clé exacte 'uName' comme dans le fichier web.config,

c'est à dire 

<appSettings>
      <add key="uName" value="myValue" />
</appSettings>

Vérifié que je n'ai pas mis tapé sous la forme userName au lieu de uName etc.

2) Comme il s’agit d’un projet Web API, il aurait alors un fichier web.config au lieu de app.config, ainsi que dans le dossier racine de votre projet. [se référer à l'image].

 enter image description here

Solution

La solution qui a fonctionné pour moi,

ChangéConfigurationManager.AppSettings["uName"] en WebConfigurationManager.AppSettings["uName"] 

et

fait en sorte que j'avais 

<appSettings>
          <add key="uName" value="myValue" />
</appSettings>

dans le fichier right c'est-à-dire.

Le fichier de droite est not web.config dans le dossier View

ni le débogage ou la version web.config

 enter image description here

5
eRaisedToX

Je viens de recevoir la réponse DLL sont appelées à partir d'un autre projet ne figurant pas dans le projet où il y a des entrées create.so dans App.config doit b être déplacé vers le fichier de configuration du projet appelant.

Par exemple, j'ai 2 projets dans ma solution, une bibliothèque de classes et une autre application de console. J'ai ajouté une référence de bibliothèque de classes à la console application. Ainsi, si j'ajoute un fichier app.config dans une bibliothèque de classes .config dans l'application de la console.Espoir que cela fonctionne

2
zaheer ahmad

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

1
Markus

Cela m'est arrivé lorsque je testais une bibliothèque de classes (.dll). Ils étaient tous deux dans le même projet mais le fichier App.config de la bibliothèque comportait les paramètres nécessaires. L'application que j'avais écrite pour tester avait besoin des paramètres car it exécutait la bibliothèque.

0
bobbins

J'ai eu ce problème en copiant un projet à partir de l'explorateur de fichiers et en renommant le projet. Cela copiait le dossier Debug et comme je ne l'avais pas paramétré sur "Copier si plus récent", il ne remplaçait pas l'ancien fichier App.config. 

Supprimez simplement le dossier Debug et reconstruisez-le. J'espère que ça aide quelqu'un.

0
thatOneGuy