2009-06-03 62 views
22

Tengo un archivo WSDL antiguo y quiero usar WCF para comunicarme con el servicio.Cómo usar un archivo WSDL para crear un Proxy WCF?

El WSDL se genera a partir de un ASMX (supongo, pero no estoy seguro).

¿Cuáles serían los pasos necesarios para comunicarse con él?

+1

No debería importar qué cosa haya generado el WSDL. – Cheeso

Respuesta

21

Uso svcutil.exe para crear un proxy WCF para llamar al servicio. Detalles here.

+1

Ok, voy a intentarlo! Hay un archivo wsdl.exe en Visual Studio y Windows SDK. Lo usé para generar una clase de proxy, ¿es esto lo mismo que svcutil.exe? Una vez que genero el archivo proxy, ¿cómo debería usar este proxy generador? – Raha

+5

No es lo mismo. svcutil.exe es una herramienta que generará proxy y stubs (y otras cosas) para WCF. wsdl.exe hace similar para ASMX. A partir de 2006, WCF ha reemplazado a ASMX como el marco de programación de servicios web preferido en .NET. Entonces, ASMX es viejo, WCF es nuevo. – Cheeso

25

Haga clic derecho en su proyecto y seleccione "Agregar referencia de servicio". Señale el WSDL. Haga clic en Aceptar". Eso debería ser todo.

enter image description here

+3

No pude encontrar un botón "examinar": tuve que copiar/pegar la ruta completa del archivo wsdl en Visual Studio 2010. –

+0

No mencioné el botón "examinar". ¿Qué quieres decir? –

+3

Oh, lo que quise decir es que estoy acostumbrado a las aplicaciones que requieren que ingrese un nombre de archivo que también tiene un botón "Examinar" o "..." para que pueda seleccionar la ubicación. La interfaz de usuario de Visual Studio es un poco engañosa ya que no le permite hacer eso; tiene que copiar/pegar manualmente la ubicación del archivo wsdl. Tan simple como es después de saberlo, definitivamente fue confuso al principio. –

8

wsdl.exe es la forma antigua de servicio web (1.1) para crear un proxy. Lo primero que debe probar es "Agregar referencia de servicio" como ya se mencionó. Esto usa svcutil.exe para crear el proxy. Si necesita más control sobre cómo se crea el proxy, puede usar svcutil.exe desde la línea de comandos con una variedad de switches.

Dicho esto ... he tenido problemas con wsdls de servicios web anteriores. En particular, un antiguo servicio web Apache AXIS que contiene operaciones sobrecargadas. Por favor, consulte mi publicación here para más detalles. (Mi problema aún no está resuelto. Espero que no encuentre los mismos problemas, pero si lo hace y resolverlos, responda mi pregunta :)

+1

No existe el concepto de "sobrecarga" en los servicios web. Apache debería haberlo sabido mejor, y con suerte ya lo han aprendido. También solían hacer cosas divertidas como emitir esquemas que hacen referencia a tipos como apachesoap: XmlElement y luego no definen estos tipos. Probablemente funcionó bien si usaba el código Apache para consumir el servicio, pero no de otra manera. –

+0

Gracias por el comentario, John. Aparentemente, WSDL 1.1 permitió sobrecargas? (ver http://webservices.xml.com/pub/a/ws/2003/01/08/randyray.html) El mismo servicio que mencioné incluía un montón de tipos de fallas que svcutil no podía entender. Me costó bastante hacer que funcionara y solo después de realizar ediciones significativas del código proxy. –

Cuestiones relacionadas