Bonjour,
J'ai rédigé le long message ci-dessous et au moment où j'allais poster j'ai trouvé la solution tout seul. Comme j'ai perdu pas mal de temps là-dessus je le laisse quand même avec la réponse, au cas où cela pourrait servir à quelqu'un...
----------
J'ai réalisé une classe d'accès à une base de données Oracle dans un projet Visual Studio 2008 de type bibliothèque de classe C#. J'utilise cette classe dans un projet application console C# de la même solution.
Mon projet console ne comporte pas de fichier app.config.
Le fichier app.config de ma bibilothèque de classes est le suivant :
Dans ma classe C# j'utilise la ligne suivante pour récupérer la chaîne de connexion :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <clear/> <add name="NomConnexion" providerName="System.Data.OracleClient" connectionString="Data Source=NOM_SERVEUR;Persist Security Info=True;User ID=NOM_USER;Password=PWD;Unicode=True" /> </connectionStrings> </configuration>
Quand je construis la solution mon fichier app.config est recopié à l'identique dans un fichier bibliotheque.dll.config qui se trouve dans le même répertoire que bibliotheque.dll. Jusqu'ici tout semble normal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 string chaineConnexion = ConfigurationManager.ConnectionStrings["NomConnexion"].ConnectionString;
Problème : quand j'utilise ma classe, impossible d'accéder à la chaîne de connexion "NomConnexion" définie dans app.config.
L'application ne "connaît" qu'une seule chaîne de connexion qui n'a rien à voir avec celle intitulée "NomConnexion". En faisant le tour de tous les fichiers .config de mon ordinateur j'ai découvert que la chaîne de connexion "connue" par l'application provient du fichier machine.config qui se trouve dans le répertoire C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG.
J'en déduis que le fichier .dll n'a pas accès au fichier .config qui se trouve pourtant dans le même répertoire que le .dll puisque sinon :
- le noeud <clear /> aurait effacé la chaîne de connexion qui vient de machine.config ;
- le noeud <add ... /> aurait ajouté la chaîne de connexion qui m'intéresse.
Je n'arrive pas à comprendre d'où peut venir le problème, l'emplacement du fichier, les paramètres du projet... semblant parfaitement normaux.
----------
Solution : ce qui compte est le fichier app.config (ou web.config) de l'application. Il faut donc créer un fichier app.config pour le projet console et recopier dedans le contenu du fichier app.config utilisé pour la bibliothèque de classes.
Partager