2010-07-08 6 views
0

J'ai un service Windows qui exécute un code de service Web dans une bibliothèque. La structure est comme ceci:Problème de référence de service Web dans le service Windows

MyWindowsService.exe (references to MyServiceLibrary.dll) 
MyWindowsService.exe.config 
MyServiceLibrary.dll (references to web service) 
MyServiceLibrary.dll.config (contains endpoint information about the web service) 

Le processus est comme ceci:

MyWindowsService calls MyServiceLibrary.Method() 
MyServiceLibrary.Method() calls WebService.Method() 

Le problème est que je reçois une erreur de ne pas en mesure de trouver des points d'extrémité pour MyServiceLibrary à moins que j'ajouter des informations à MyWindowsService .exe.config aussi. Est-ce qu'il y a un moyen d'éviter cela? Je voudrais garder les fichiers de configuration séparés les uns des autres si possible.

Répondre

0

La configuration de MyServiceLibrary.dll.config n'est pas chargée. Déplacez la configuration du point de terminaison du service Web dans MyService.exe.config.

+0

J'ai effectivement déplacé la configuration du point de terminaison vers MyWindowsService.exe.config et cela a fonctionné comme ce que j'essaie d'éviter. Je voudrais conserver la configuration du point de terminaison dans MyServiceLibrary.dll.config uniquement. Des idées pour lesquelles le fichier de configuration ne se chargerait pas? – dstr

+1

C'est simplement comment .NET fonctionne. Voir http://msdn.microsoft.com/en-us/library/ms229689(vs.71).aspx pour plus d'informations. Il y a une exception ... les sections de configuration et les éléments peuvent être déplacés vers un fichier externe en utilisant l'attribut "configSource". Voir http://weblogs.asp.net/cibrax/archive/2007/07/24/configsource-attribute-on-system-servicemodel-section.aspx pour un exemple et, si vous utilisez WCF, peut-être une solution alternative . –

0

Voulez-vous dire que votre service Windows appelle le service Web? Si c'est le cas, le service Windows ne doit pas référencer l'assembly de service Web (DLL). À la place, vous devez ajouter une référence de service au projet de service Windows, en indiquant où le service Web est hébergé. Ensuite, le service Windows est juste un autre client du service Web.

+0

Ce n'est pas exactement comme ça. J'ai mis à jour ma question, désolé pour la confusion. Le processus est comme ceci: MyWindowsService appelle MyServiceLibrary.Method() et MyServiceLibrary.Method() appelle WebService.Method() – dstr

Questions connexes