2010-04-12 3 views
1

Mon application doit être installée sur les serveurs Web de mon client. Certains clients veulent utiliser SSL et d'autres non. Mon application a un service WCF et je dois actuellement aller dans le web.config pour chaque installation et passer le mode de sécurité de <security mode="Transport"> à <security mode="TransportCredentialOnly"> en fonction de la situation SSL du client. Je suis en mesure de définir les liaisons client lors de l'exécution. Cependant, j'aimerais savoir s'il existe un moyen de définir les liaisons de service lors de l'exécution (côté serveur).WCF définir des liaisons sur le service à l'exécution

Répondre

1

Oui, absolument! Cela dépend de la manière dont vous hébergez vos services WCF. Dire qu'il doit être installé sur les serveurs Web, je suppose que vous hébergez dans IIS.

Dans ce cas, vous devez créer votre propre descendant de ServiceHostFactory - ce qui n'est pas vraiment un problème.

Votre CustomServiceHostFactory est nécessaire pour renvoyer une instance de votre ServiceHost, correctement configurée selon vos besoins, à IIS.

Dans la méthode CreateServiceHost de la fabrique personnalisée, vous configurez en principe votre ServiceHost et configurez tous ses points de terminaison, comportements, liaisons, etc. - le tout dans le code, le tout sous votre contrôle total. Vous pouvez faire tout ce que vous devez faire ici, pour configurer votre service au besoin.

Afin d'héberger votre service. Vous devrez adapter le fichier MyService.svc d'inclure ce CustomServiceHostFactory comme l'usine à utiliser:

<% @ ServiceHost Language="C#" Service="YourService" 
       Factory="CustomServiceHostFactory" %> 

et c'est tout!

Consultez Extending Hosting Using ServiceHostFactory sur MSDN pour plus de détails et consultez l'article A Custom ServiceHostFactory sur CodeProject pour un exemple.

Questions connexes