2010-04-12 4 views
1

J'ai obtenu une solution qui comprend 3 projets différents, une bibliothèque de classes, un service Web et un service Windows.Comment stocker la chaîne de connexion dans uniquement le Data Access Layer (Bibliothèque de classes .NET)

MySolution.DataAccessLayer (Bibliothèque de classes)

Utilisation de l'entité-Framework 3.5 pour accéder à la base de données.

MySolution.WebService (Web Service)

MySolution.WindowsService (service Windows)

Mon problème est que doivent inclure la chaîne de connexion dans mon service Web/fichiers de configuration Windows Service pour le faire fonctionner.

J'ai vérifié et j'ai la bonne chaîne de connexion dans mon App.Config DataAccessLayer.

Pourquoi n'utilise-t-il pas cela?

Répondre

4

Cela ne fonctionnera pas car la DLL est chargée dans l'espace de processus. Cela signifie que les services chargent la DLL et que c'est la configuration du service qui est utilisée. En d'autres termes, le service démarre, charge le fichier de configuration (qui lui appartient), puis charge la DLL dataaccess. Comme il a déjà sa propre config, il ne cherchera pas plus loin pour la config DLL.

+1

Pour ajouter, il est explicitement APPLICATION config - une DLL liée est une bibliothèque, pas l'application. – TomTom

0

Le système de configuration recherche l'application/web.config pour l'application en cours d'exécution, quel que soit l'emplacement du code dans la configuration.

La bibliothèque de classes ne se soucie pas du fait qu'elle est une bibliothèque de classes/seperate .dll lorsqu'elle est en cours d'exécution et recherche simplement la configuration dans le fichier app.config du programme en cours d'exécution - qui sera la configuration de votre service Windows dans un cas et la config pour votre service Web dans l'autre.

Questions connexes