1 votes

Déploiement de services WCF - Où sont conservés les fichiers d'application ?

J'ai un service WCF qui appelle, par l'intermédiaire d'une BL, une couche de données et finalement un back-end SQL Server. Mon service expose diverses méthodes/opérations pour obtenir 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 façon dont je prévois de le déployer.

Hier, lorsque j'ai effectué un test de déploiement, le service a bien démarré mais je n'ai pas eu l'occasion de voir si les données étaient correctement extraites. Voici le problème : 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 fichier bin \debug du projet de service Windows sur le serveur et en référençant le fichier .exe lorsque j'ai utilisé InstallUtil.exe. Mais la connexion de données pour le DL devrait prendre une chaîne de connexion différente, évidemment, puisqu'elle devrait se connecter à la base de données sur le serveur, et non sur mon ordinateur portable. Pourtant, le seul app.config que je vois dans le répertoire où j'ai effectué le déploiement est celui de l'hôte de service. Les autres projets, comme le DL et le BL, sont également présents sous forme de DLL, mais il n'y a pas d'app.config pour eux. Alors comment puis-je remplacer l'app.config du DL par celui qui correspond à cet environnement ? Je suis sûr qu'il s'agit d'un problème simple que je n'arrive pas à cerner.

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

1voto

Andy White Points 36586

Lorsque vous déployez un projet, le seul app.config/web.config que vous obtiendrez est celui qui se trouve dans votre projet exécutable (site web/application console/service Windows/application formulaires Windows/etc. projet). Les app.config des projets DLL ne seront pas copiés dans le répertoire bin.

Vous devrez 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 un service Windows/une application console. Si vous hébergez HTTP en dehors de 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 est peut-être plus facile si vous hébergez dans IIS, mais cela fonctionne dans un simple ServiceHost.

<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>

0voto

Eugene Yokota Points 43213

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X