2009-12-29 8 views
3

j'ai une bibliothèque de classes C# A qui a certains paramètres de configuration dans son App.config je les accès àC# Lecture des paramètres de configuration

Method1() 
{ 
string connectionString = ConfigurationManager.AppSettings["ConnectionString"]; 
} 

Mais quand je l'appelle Méthode 1() de mon projet Web ASP B, il ne trouve pas les paramètres de configuration dans la bibliothèque de classes A

Une idée de ce qui se passe ici?

+1

pour les applications Web, utilisez 'WebConfigurationManager' à la place du ConfigurationManager –

Répondre

4

La structure de gestion de configuration entière créée par .Net runtime est spécifique au processus. pas spécifique à l'assemblage. Cela signifie que chaque exécutable en cours d'exécution obtient un app.config. Un projet Web obtient un web, config (en fait un projet web peut avoir plusieurs web.configs), mais les assemblys ne peuvent pas avoir leurs propres app.configs, ils peuvent avoir du code pour lire les paramètres de configuration dans le fichier config quel que soit le processus référencé dans (lequel utiliser l'assembly comme une référence dans une application WinForms, puis il peut voir les paramètres de configuration dans MyWinformsApplication.exe.config; Utiliser l'assembly dans une application Web ASP.Net, puis il peut voir les paramètres confiog dans le web.config applications web ...

2

Les paramètres de configuration doivent être copiés dans votre fichier web.config. Essentiellement, il n'y a qu'un seul fichier de configuration par défaut que le ConfigurationManager lit par projet.

0

Il recherche le paramètre de configuration dans votre projet Web.

2

Une bibliothèque ne possède pas son propre fichier de configuration. Les paramètres de configuration doivent être définis dans l'exe qui utilise cette bibliothèque.

2

Je crois que vous pouvez utiliser OpenExeConfiguration pour ce faire:

string exePath = "<full path and name of the app .exe file>"; 

System.Configuration.Configuration otherConfig = 
    ConfigurationManager.OpenExeConfiguration(exePath); 

Vous pouvez placer le chemin de l'autre .exe dans le fichier web.config de l'application web (par exemple, dans la section appSettings), et le lire à partir de là, ce qui serait mieux que de le coder en dur ici.

pour afficher les appSettings dans ce fichier de configuration:

AppSettingsSection otherAppSettings = otherConfig.AppSettings; 

Ce MSDN page pourrait aider.