tutorial publicos example español crear cliente wcf web-services wsdl namespaces

wcf - publicos - wsdl soap



WCF: cómo generar un único documento WSDL, sin WSDL: ¿importar? (7)

Me preocupa un problema ... Estoy tratando de encontrar una manera de generar un documento wsdl único a partir de mi servicio WCF, es decir, sin ningún vínculo a documentos externos. He usado FlatWsdl para eliminar todos los enlaces xsd: import, bou mi wsdl generado aún contiene un enlace a un documento wsdl externo a través de una declaración wsdl: import:

<wsdl:import namespace="http://myurl/mynamespace" location="http://myserver/myservice.svc?wsdl=wsdl0"/>

Este documento en realidad contiene todos los esquemas xsd incluidos, entonces ... ¿hay una forma de incorporar también este documento wsdl externo, para tener un solo archivo wsdl?

Muchas gracias por cualquier tipo de ayuda.


(EDIT: se eliminó la respuesta anterior sobre FlatWSDL porque, como usted señaló, se trataba de eliminar xsd: import not wsdl: import).

Mire este blogpost: WSDL generado por control en WCF

"... Siempre hay un WSDL generado para un URI de espacio de nombres de destino ..."

¿Tiene un espacio de nombres diferente para ServiceContract, DataContract, ServiceBehavior, etc.?


Además de la respuesta de Jim anterior, si está usando el código C # para configurar un WCF ServiceHost directamente:

using System.ServiceModel.Configuration;

y cuando configura su ServiceHost:

UseRequestHeadersForMetadataAddressBehavior urh = new UseRequestHeadersForMetadataAddressBehavior(); serviceHost.Description.Behaviors.Add(urh);

Luché para encontrar esta información en línea, tan simple como es. Con suerte, ayuda a alguien en una situación similar.



Esta es una respuesta tardía, pero tuve el mismo problema con algunos de nuestros servicios de WCF. Si está en .NET 4.5, como en la respuesta anterior, use? SingleWSDL, pero si no tiene como objetivo .NET 4.5, entonces agregué lo siguiente a mi web.config para solucionar el problema ...

<useRequestHeadersForMetadataAddress> <defaultPorts> <add port="80" scheme="http" /> <add port="443" scheme="https" /> </defaultPorts> </useRequestHeadersForMetadataAddress>

Esto va en tu comportamiento. De esa forma no tuve que aplanar el WSDL porque todas las referencias eran para MyURL en lugar de MyServer.

Espero que esto ayude a otros con un problema similar.



También puede usar el proyecto WCFExtras que tiene una extensión para crear un solo archivo WSDL.

WCFExtras

Una colección de extensiones de WCF útiles que incluyen compatibilidad con Soap Header, documentación de WSDL y más.

La plataforma WCF es muy extensible y le permite agregar fácilmente características que no son parte del producto principal. Este proyecto contiene algunas extensiones que necesitaba en un proyecto basado en WCF:

  • Soporte de SOAP Header para WCF Agregar WSDL
  • Documentación del código fuente Comentarios XML
  • Anular URL de ubicación de dirección SOAP
  • Archivo WSDL único para una mejor compatibilidad con herramientas SOAP más antiguas.

http://wcfextras.codeplex.com/


mi problema estaba en las definiciones de punto final, que están en el espacio de nombres tempuri.org agregando bindingNamespace a las declaraciones de punto final que solucionan mi problema. gracias a todos por su ayuda :)