2009-01-14 21 views
6

Un problema común para WCF parece ser cómo se resuelve el nombre de host dentro del wsdl para los enlaces a otros archivos. La cuestión es que el nombre de la máquina del equipo se coloca en el WSDL para enlazar los otros archivos WSDL, por lo que si usted visita http://myhost/service.svc puede apuntar al resto del WSDL en otra ubicación, es decir http://mypc/service.svc?wsdl lo que obviamente es algo no puedes ver externamenteWCF Dirección de ubicación WSDL con HTTPS

Ya hay algunas soluciones para esto, siendo esta la más común. Donde puedes configurar el encabezado del host.

Mi pregunta es, ¿Cómo puedo solucionar este cuando se utiliza una IP externa. Me estoy conectando a la oficina central de un cliente desde su sitio web para recuperar datos, no está configurado con un dns, etc. y el IP se redirige a una máquina internamente. ¿Hay alguna manera de forzar a la máquina que aloja el WCF a presentar la dirección externa en los archivos wsdl en lugar del nombre de la máquina?

Estoy utilizando SSL para la conexión, lo que puede hacer una diferencia (como con los encabezados de host).

Respuesta

4

Debe configurar el encabezado del host para secureBingings del sitio web dentro de IIS.

Aquí es un artículo sobre WCF WSDL & xsd:import schemaLocations link to local machine name not domain name while hosted in IIS

+0

Gracias por la respuesta, pero eso solo cubre escenarios en los que se usa un nombre de host alternativo. No resuelve la cuestión del uso de IP para acceder al servicio web. – dnolan

+0

¿Ha intentado agregar la IP externa al encabezado del host, p. \ Securebindings "443: ip.ip.ip.ip"? –

0

Sí, se puede establecer una dirección IP como el encabezado de host. Solo asegúrese de que la dirección IP externa también sea reconocida internamente. Aprendí esto de la manera difícil cuando en uno de nuestros proyectos, estamos utilizando un servidor ISA como proxy.

Si alguna vez se encontró con una situación similar, y aún insiste en usar la dirección IP externa como encabezado de host, entonces la única opción es agregar el nombre de la máquina del servicio web en el archivo de hosts.

Cuestiones relacionadas