wcf extrémité adresse relative

Je suis en train d'apprendre wcf et ne peut pas comprendre un très de base de la chose.

Je suis de la création d'un service WCF qui je veux être hébergé dans IIS, tout comme application web avec son propre chemin comme http://myhost/myapp/ et tout et tout.

Je suis de la création du service WCF projet de VS, j'ai une *.svc fichier décrivant, puis-je définir un simple point de terminaison comme cela:

<endpoint address="" 
          binding="basicHttpBinding" 
          contract="wcf_service_auth.IPshService" />

Puis-je publier ce service comme une application web IIS pour un répertoire virtuel, admettons, c'est le nom psh_pub, afin que je puisse accéder au service via l'url http://localhost/psh_pub/pshservice.svc/. Il me montre WCF salutations page et me donne un lien vers WSDL, donne-moi de corriger description wsdl.

C'est ok.

À l'étape suivante, je veux ajouter un MEX de point de terminaison. - Je ajouter de config:

<endpoint address="mex" 
          binding="mexHttpBinding" 
          contract="IMetadataExchange"/>

C'est ok aussi, le point de terminaison est accessible à l'adresse http://localhost/psh_pub/pshservice.svc/mex et WcfTestClient.exe donne-moi de corriger config à partir de cette url.

Ici, le problème vient.

J'ai un service WCF de travail sous IIS et je veux ajouter un autre point de terminaison. Par exemple laisser une net.tcp point de terminaison. IIS est configuré par défaut pour accepter net.tcp connexions au port 808 et je suis en ajoutant net.tcp protocole de propriétés de mon application web, et je veux ajouter un point à mon service comme ça:

<endpoint address=""
          binding="netTcpBinding" 
          contract="wcf_service_auth.IPshService"  />

et maintenant, je suppose que mon service devrait être accessible via l'url net.tcp://localhost:808/psh_pub/pshservice.svc. Mais il n'est pas. Et tous les "comment" et le manuel sur le web dit que je doit préciser l'adresse complète dans le fichier de config comme ça:

<endpoint address="net.tcp://localhost:808/psh_pub/pshservice.svc" 
          binding="netTcpBinding" 
          contract="wcf_service_auth.IPshService" />

Et si je le fais, ça marche. Mais si l'hôte le service dans un autre répertoire virtuel, je vais avoir besoin de changer la configuration. Si je l'héberger sur un autre serveur, je vais avoir besoin de changer de config. Si je l'héberger sur plusieurs serveurs, je vais devoir maintenir comme beaucoup de configs que les serveurs que j'ai.

Donc l'une des principales questions est:

Est-il de toute façon dans WCF pour spécifier un net.tcp (ou https) point de terminaison d'un IIS-hébergé service WCF sans spécifier l'url absolue?

OriginalL'auteur pushist1y | 2011-10-31