Tengo un servicio accesible a través de http y net.pipe. Se aloja en IIS 7 (Server 2008). Es posible que esté alojando diferentes instancias de este servicio para varios clientes en la misma máquina y, por lo tanto, el HTTP está configurado con nombres de host virtuales, etc. Todo está funcionando bien.controlando el nombre de una tubería con nombre cuando se aloja el enlace WCF net.pipe en IIS
pensé que haría similar para la tubería de la red llamado vinculante - utilizando algún tipo de los clientes 'virtualhostname' en la dirección de base de canalización con nombre, por lo tanto, lo que me permite para acceder a los diferentes casos de clientes con diferentes urnas net.pipe (Me doy cuenta de los nombres net.pipe son URN's no URL así que pueden ser esencialmente arbitrarias pero pensé que seguiría un patrón similar a las direcciones HTTP).
Aquí es mi web.config
<service name="Administration" behaviorConfiguration="AdministrationBehavior">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="normalWsBinding" contract="IAdministration" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<endpoint address="" binding="netNamedPipeBinding" bindingConfiguration="normalNetNamedPipeBinding" contract="IAdministration" />
<endpoint address="mex" binding="mexNamedPipeBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://virtualhostname.com/service" />
<add baseAddress="net.pipe://virtualhostname.com/administration/service" />
</baseAddresses>
</host>
</service>
Sin embargo, al acceder al WSDL para el servicio - la dirección base para el net.pipe parece para ser ignorado por IIS. En cambio, obtengo el nombre de host real de la máquina y una URN de dirección de red que parece haber sido formateada completamente por IIS.
<wsdl:port name="NetNamedPipeBinding_IAdministration" binding="tns:NetNamedPipeBinding_IAdministration">
<soap12:address location="net.pipe://realhostname/service/Administration.svc"/>
<wsa10:EndpointReference>
<wsa10:Address>net.pipe://realhostname.com/service/Administration.svc</wsa10:Address>
<Identity>
<Spn>host/realhostname.com</Spn>
</Identity>
</wsa10:EndpointReference>
</wsdl:port>
sin control sobre la forma en que se forman los nombres net.pipe, no voy a ser capaz de discriminar entre las múltiples instancias de servicio al cliente en la máquina. ¿Alguien tiene alguna pista sobre cómo se puede controlar el URN obligatorio de enlace de canal dentro del entorno de IIS?
(hago un montón de net.pipe independiente de alojamiento durante la prueba (es decir, nueva ServiceHost()) así que sé que mis fijaciones net.pipe funcionan fuera del IIS, y no permiten el control sobre el tubo llamado exacta URN usado)
Si los nombres no se pueden controlar dentro de IIS, ¿alguien tiene alguna experiencia con el alojamiento y accediendo a múltiples instancias de servicio net.pipe en la misma máquina ?
sabe que los enlaces net.pipe solo funcionan "en la máquina", p. no puede acceder a ellos desde otra máquina, incluso si están alojados en IIS .... –
al hospedarse en IIS, realmente no puede elegir su dirección de servicio, siempre es 'http: // machinename [: port ]/virtualdir/yourservice.svc' - Sospecho que lo mismo se aplica a las direcciones net.pipe: no puede controlar su nombre si está alojado en IIS ... –
Sí, los puntos finales HTTP son para el acceso fuera de la máquina, y esperaba utilizar los puntos finales net.pipe para acceder a la máquina de forma limitada (pero con suerte más rápido). Cuando alojo mis puntos finales HTTP en IIS, puedo elegir la dirección del servicio (en algún nivel) porque especifico el dominio que quiero usar. Esto me permite tener múltiples sitios de IIS cada uno accesible a través de diferentes URLs es decir http://customer1.com/admin/Admin.svc y http://customer2.com/admin/Admin.svc Si puedo' t elegir mis direcciones base para net.pipe, ¿cómo puedo tener múltiples enlaces net.pipe alojados para diferentes clientes en IIS? –