2010-11-14 21 views
8

Necesito crear un servicio web (.NET) que será utilizado por otro sistema. Para que implementen la lógica que usará mi servicio web, necesito enviarles archivos wsdl y XSD para mi servicio web.Cómo generar archivos XSD para el servicio web

El archivo WSDL no es un problema, lo obtendré de la página .asmx pasando el parámetro wsdl. Pero, ¿cómo puedo generar archivos XSD apropiados para mi servicio web? ¿Puedo usar la herramienta XSD.exe y pasarle el archivo .wsdl como parámetro, o hay otra manera?

Gracias de antemano.

Respuesta

10

Puede usar la utilidad disco.exe que le permite guardar los archivos wsdl y xsd en el disco para que esos archivos se puedan usar para generar un proxy de cliente sin tener acceso a la dirección web WSDL.

+0

He tenido éxito al generar archivos XSD con esta herramienta, ¡salud! – buhtla

+0

No puedo generar xsd desde la dirección web wsdl. – arjun

2

Si está utilizando la edición Pro de Visual Studio (y superior), al abrir un archivo XML encontrará un menú XML, con un elemento que generará un XSD (Crear esquema). Creo que usa xsd.exe debajo del capó sin embargo.

Ver MSDN.

+0

Cuando intento esto obtengo el siguiente error: "La instancia xml suministrada es un esquema o contiene un esquema en línea. Esta clase no puede inferir un esquema para un esquema". – buhtla

+0

@buhtla - aparentemente, un esquema ya está definido. Mire el XML y vea si se vincula a un esquema. – Oded

+0

Estoy tratando de generar XSD desde el archivo WSDL. WSDL se genera automáticamente a partir del servicio web que he creado en Visual Studio, por lo que el servicio web eather genera un XML no válido (lo cual dudo) o hay algún otro motivo para este error. – buhtla

0

Puede agregar "? Xsd = 1" al final de la url del servicio para obtener el esquema.

es decir, si su URL del servicio web es : // my_ws_service: 9080/servicio/nombre entonces se puede obtener utilizando WSDL : // my_ws_service:? 9080/servicio/nombre WSDL y se puede obtener utilizando el esquema : // my_ws_service: 9080/service/name? xsd = 1 (note xsd distingue entre mayúsculas y minúsculas)

Espero que ayude.

0

Pensé en compartir mi solución, en mi caso necesitaba crear una clase C# real para poder usarla para deserializar el XML de respuesta para un punto final dado cuyo WSDL había guardado en mi PC de desarrollo.

me abrieron en Visual Studio Comando y escribió lo siguiente:

wsdl "name-of-your-file" 

Cuando el nombre de-su-archivo es el nombre de su archivo WSDL salvado. Ejecutar el comando debería generar una clase C# que luego pueda usar en la aplicación de su cliente para deserializar una respuesta XML SOAP para su punto final dado.

Espero que esto ayude.

Cuestiones relacionadas