J'ai une application web à trois niveaux qui produit trois dll distinctes:Pourquoi la valeur app.config est-elle nulle?
- Web.UI.dll
- Web.Application.dll
- Web.DAL.dll
deux Web.Application.dll
et Web.DAL.dll
ont leur propre app.configs. J'ai besoin d'accéder à un paramètre spécifique qui vit dans web.config. J'utilise le code suivant:
[CacheUtil.cs]
string cacheName = ConfigurationManager.AppSettings.Get("CacheName");
J'ai vérifié que ce réglage existe. Alors, pourquoi alors, quand je cours, je reçois NULL? Est-ce que CacheName doit exister dans tous les fichiers .config?
Voici la mise en web.config:
<appSettings>
<add key="CacheName" value="staging"/>
Pour votre information, CacheUtil est un singleton qui est paresseux initialisé lors du premier accès. Le premier accès est en cours dans le projet DAL.dll.
Merci!
Hmm, curieux. Il semble bien lire en mode débogage, mais pas après la publication. Donc, les app.configs sont dénués de sens? –
'app.config' est destiné aux projets qui produisent un fichier EXE. Une partie du processus de construction est qu'il est renommé en 'ProgramName.exe.config' et copié dans le répertoire de sortie. Les applications Web sont différentes: au lieu de rechercher "ProgramName.exe.config", elles recherchent "web.config". Avoir des fichiers 'app.config' dans un projet de bibliothèque de classes n'a aucun sens, sans copier les valeurs contenues dans un fichier de configuration approprié. –