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>
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.
Si vous êtes UNIT TESTING il vous faut UNE COPIE du APP.CONFIG à l'intérieur du UNIT TEST PROJECT
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.
Une solution astucieuse consiste à ajouter des raccourcis de fichier de configuration dans d'autres projets afin de ne mettre à jour qu'un fichier:
Cela ressemble au partage de fichiers d'assemblage conformément à la réponse n ° 2: https://stackoverflow.com/a/15319582/495455
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.
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].
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
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
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.
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.
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.