2011-07-06 74 views
5

Estoy trabajando con el servicio web Fedex. No proporcionaron una URL de servicio web como http://hostServer/WebserviceRoot/WebServiceName.asmx. Más bien, proporcionaron un archivo .wsdl.Generación de un proxy de servicio web de un WSDL C#

Guíeme en la generación de las clases proxy del servicio web desde el archivo .wsdl y agregue una referencia de servicio web a mi proyecto.

sé para generar el proxy de wsdl como

wsdl /l:cs /protocol:SOAP /o:MyProxy.cs mywsdl.wsdl 

pero yo quiero saber lo que hace. Puede crear la clase proxy, pero ¿cómo puedo agregar la referencia del servicio web a mi proyecto?

+0

Creo que debería crear un _cliente_ de ese WSDL directamente, no un servidor primero. Y este comando parece estar creando un Cliente. Deberías haber casi terminado (-: –

Respuesta

11

Si está creando las clases proxy manualmente, solo necesita agregarlas a su proyecto. El mecanismo Add Web Reference en Visual Studio se utiliza para automatizar este proceso y agregar los tipos de.

El ejecutable wsdl leerá el archivo WSDL que ha descargado ("mywsdl.wsdl"), y generar el código proxy, en su ejemplo en el lenguaje C# (en "MyProxy.cs"). Puede agregar "MyProxy.cs" a su proyecto y comenzar a crear instancias del cliente generado en su proyecto.

5

utilice el comando wsdl.exe desde el símbolo del sistema de Visual Studio.

ejemplo:

WSDL c:/myfile.wsdl 
1

Por lo general hay dos maneras de lidiar con los servicios web. Uno, como usted mencionó, usa un servicio web URL ../service.asmx. De esta forma, solo tiene que usar "Agregar referencia web" en el proyecto de estudio visual y siempre estará conectado al servicio web en vivo. Esto es mucho más fácil, la desventaja es que si el servicio web decide cambiar algo, también debe cambiar su referencia. Recompile el proyecto y vuelva a implementarlo.

Cuando conserva una copia local del archivo wsdl, si introducen un campo obligatorio en el WSDL activo, usted sigue estando protegido siempre que la base de código subyacente aún funcione con él. Si está generando la clase proxy.cs por su cuenta, como en la respuesta aceptada, simplemente funciona como agregarla a través de Visual Studio, excepto que tiene que agregar manualmente la clase al proyecto.

Además, creo que puede obtener toda la url del servicio web desde <soap:address location="http://testsite.com/test.asmx" /> en el archivo WSDL. Por lo general, no es una buena práctica utilizar un archivo WSDL local si su intención es mantenerse al día con los cambios. Dudo que tengas ese problema, ya que es un servicio web de fedex, probablemente haya pasado la prueba del tiempo.

Cuestiones relacionadas