Cómo generar referencia de servicio solo con un archivo wsdl físico


123

He estado creando y consumiendo servicios web durante años y siempre he podido usar Visual Studio para crear una referencia de servicio desde el cliente. Tengo un servicio de terceros con el que necesito trabajar y se niegan a abrir su seguridad para que pueda ver el wsdl y hacer referencia al servicio. Es un servicio público, por lo que no veo la necesidad de ese nivel de seguridad, pero es lo que es.

Sé que esta es una pregunta n00b y me da vergüenza preguntarla, pero ¿cómo puedo crear la información de referencia de servicio equivalente en mi cliente cuando todo lo que tengo disponible es una copia física del wsdl que el cliente me envió por correo electrónico? Web.config cambia, la capa de objeto sobre los datos SOAP, etc. Al igual que con una referencia de servicio automatizada, solo quiero abrir una conexión al servicio y comenzar a usarla con los objetos definidos.

El servicio de terceros no es WCF por lo que puedo decir, pero es SOAP. Estoy usando VS 2010 por cierto. Gracias de antemano, Ken


Respuestas:


180

Este puede ser el método más fácil.

  • Haga clic derecho en el proyecto y seleccione "Agregar referencia de servicio ..."
  • En el cuadro Dirección: ingrese la ruta física (C: \ test \ project ....) del wsdl descargado / modificado.
  • Hit Go

11
Si usa "Copiar como ruta", elimine las comillas.
O. Jones

Al guardar el wsdl para pasarlo a otra persona, "ver fuente" del wsdl desde el servicio web en Chrome me dio un wsdl que funcionaba, mientras que IE11 no. YMMV.
archangel76

68

Hay dos maneras de hacer esto. Puede usar el IDE para generar un WSDL, o puede hacerlo a través de la línea de comando.

1. Para crearlo a través del IDE:

En el panel del explorador de soluciones, haga clic con el botón derecho en el proyecto al que desea agregar el Servicio:

ingrese la descripción de la imagen aquí

Luego, puede ingresar la ruta a su servicio WSDL y presionar ir:

ingrese la descripción de la imagen aquí

2. Para crearlo a través de la línea de comando:

Abra un símbolo del sistema VS 2010 (Programas -> Visual Studio 2010 -> Visual Studio Tools)
Luego ejecute:

WSDL /verbose C:\path\to\wsdl

WSDL.exe generará un archivo .cs para su consumo.

Si tiene otras dependencias que recibió con el archivo, como xsd, agréguelas a la lista de argumentos:

WSDL /verbose C:\path\to\wsdl C:\path\to\some\xsd C:\path\to\some\xsd

Si necesita una salida VB, úsela /language:VBademás de /verbose.


Obtengo 'No se puede importar el enlace' blah 'del espacio de nombres' blahURL 'y no se puede importar la operación' SomeRequest ', falta el elemento' xxx '. ¿Significa esto que necesitan darme algunos archivos de soporte más, o que tienen su seguridad tan bloqueada que no puedo hacer nada?
kfoster

Ciertamente parece que te faltan dependencias. Abra el WSDL y mire en la parte superior. Si ve líneas que tienen un importsímbolo seguido de una ubicación de esquema que apunta a una ruta xsd, también necesitará esos archivos xsd.
Lynn Desmoronando

Gracias por responder. Tengo un correo electrónico pendiente con el cliente para ver si puedo obtener las importaciones xsd necesarias. Sin embargo, es tan frustrante que, cuando lo hago correctamente, solo introduzco una URL en el cuadro de diálogo ServiceReference, ¡presiono un botón y viola! Estoy a unas 3 líneas de código lejos de llamar a un método de servicio. Todo el proceso dura unos 5 minutos. Pero he estado trabajando con este cliente durante semanas y no he llegado a ningún lado porque su personal de seguridad no abrirá el acceso a ninguna definición de servicio a través de la web.
kfoster

Eso es rudo. Actualmente estoy esperando una conexión vpn para un proyecto, yo mismo. Afortunadamente, me dieron el wsdl y los documentos xsd que lo acompañaban con anticipación. ¿Entonces encontró esas importaciones en el wsdl?
Lynn Desmoronando

Si. Resulta que 4 servicios me dieron wsdl para 2 de ellos y xsd para los otros 2, por lo que no hay un conjunto completo de archivos para ninguno de los servicios. Pero finalmente obtuve xsd y pude generar archivos .cs para 2 de los servicios, supongo que los otros 2 seguirán. Gracias.
kfoster
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.