Question

J'ai un service WCF qui appelle, par le biais d'un BL, une couche de données et, finalement, SQL Server. Mon service expose diverses méthodes / opérations pour extraire des données de la base de données. J'ai également construit un hôte pour le tester et un hôte de service Windows, qui est la méthode par laquelle je prévois de le déployer.

Hier, lorsque j'ai fait un test de déploiement, le service a bien démarré, mais je n'ai pas eu la chance de voir si les données étaient correctement extraites. Voici l’objet: Mon environnement de test de déploiement (MS Server 2003) est totalement différent de mon propre environnement de test local (ordinateur portable). J'ai déployé en copiant le contenu bin \ debug du projet de service Windows sur le serveur et en y référençant le fichier .exe lorsque j'ai utilisé InstallUtil.exe. Mais la connexion de données pour la liste de distribution devrait prendre une chaîne de connexion différente, bien sûr, car elle devrait se connecter à la base de données sur le serveur, pas à mon ordinateur portable. Pourtant, le seul app.config que je vois dans le répertoire dans lequel j'ai déployé est celui de l'hôte de service. Les autres projets, tels que DL et BL, sont également présents sous forme de DLL, mais pas de fichier app.config pour l'un ou l'autre. Alors, comment puis-je remplacer le app.config pour le DL avec le correct pour cet environnement? Je suis sûr que c’est un problème simple sur lequel je ne veux tout simplement pas parler.

Une question connexe: si nous décidons plus tard d’utiliser un hôte HTTP à la place de - ou en plus de - TCP, puis-je utiliser un deuxième hôte pour piloter ce même service? Dois-je simplement déployer l'hôte avec IIS et ajouter un nœud de service à app.configs?

Était-ce utile?

La solution

App.config pour l'environnement d'hébergement, dans ce cas le service Windows géré, contient la configuration de tous vos modules. De même, Web.config contient toutes les configurations si vous l'hébergez sur IIS.

Autres conseils

Lorsque vous déployez un projet, le seul fichier app.config / web.config que vous obtiendrez est celui de votre projet exécutable (site Web / application console / service Windows / application Windows Forms / etc. project). Les app.configs pour les projets DLL ne seront pas copiés dans le répertoire bin.

Vous devez copier les sections de configuration de vos projets DLL et les placer dans votre projet de service app.config.

Pour votre deuxième question, vous pouvez héberger différents points de terminaison pour le même service dans le même ServiceHost. Vous pouvez héberger un point de terminaison HTTP dans une application de service / console Windows. Si vous hébergez HTTP en dehors d'IIS, vous devrez peut-être donner des autorisations à votre utilisateur pour lui permettre d'ouvrir un port HTTP. (voir http://msdn.microsoft.com/en-us/library/ ms733768.aspx ). Pour HTTP, votre vie sera peut-être plus facile dans IIS, mais cela fonctionne dans un ServiceHost ordinaire.

<system.serviceModel>
    <services>
        <service name="MyServiceTypes.MyService">
            <endpoint address="http://localhost:44444/MyService"
                      binding="basicHttpBinding"
                      contract="MyServiceTypes.IMyService" />

            <endpoint address="net.tcp://localhost:55555/MyService"
                      binding="netTcpBinding"
                      contract="MyServiceTypes.IMyService" />
        </service>
    </services>
</system.serviceModel>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top