2010-03-10 27 views
13

¿Cómo llamar a un servicio web mediante programación en asp.net sin utilizar agregar referencia web? Mi URL de servicio web sigue cambiando. Por lo tanto, necesito capturar la URL en tiempo de ejecución y mostrar los resultados. Por favor consejo.Cómo llamar a un servicio web mediante programación en asp.net

+0

Especifique todas las configuraciones de enlaces y transporte en web.config. Luego, cree una clase cliente-proxy que implemente su interfaz de servicio web y cree/abra un canal al punto final donde reside el servicio. –

Respuesta

0

¿Dónde intenta llamar al servicio y dónde se encuentra el archivo de servicio?

Si el servicio se encuentra en el mismo sitio. ¿Por qué no simplemente crear una instancia del nombre de clase del servicio? O simplemente cree una clase separada y use la interfaz

2

Puede especificar la URL del punto final como parte del constructor de su clase de proxy del lado del cliente.

Si no necesita especificarlo durante el tiempo de ejecución, también se puede configurar en su archivo web.config.

18

Puede cambiar la URL de la web de referencia en tiempo de ejecución (a condición de que la nueva dirección está organizando un servicio con el mismo esquema que utilizó originalmente para crear la referencia):

MyWebService ms = new MyWebService(); 
ms.Url = "http://example.com/webservice.asmx"; 
ms.MyWebMethod(); 

Web Las referencias son Definitivamente el camino a seguir, mientras que las clases creadas por la referencia web suelen ser bastante pesadas, toda esa tipificación fuerte hace que valga la pena.

+4

Esta parece ser la solución más simple de lejos. ¿Por qué no está recibiendo más amor? – Kjensen

+0

Porque la pregunta es invocar un servicio dinámicamente y no agregando referencia web y descargando el proxy. –

4

tiene que seguir los siguientes pasos.

PreReq: En primer lugar, conoce la URL del servicio web.

Solución: uso wsdl.exe para crear una clase de proxy y que compilarlo.

wsdl /out:myProxyClass.cs http://hostServer/WebserviceRoot/WebServiceName.asmx?WSDL 

(. Existen otros detectores disponibles para WSDL por ejemplo, para generar VB clase, es necesario agregar el interruptor /idioma: VB)

Una vez que se genera a su clase de proxy puedes consumir fácilmente en código.

MyProxyClass objService = new MyProxyClass(); 
DateTime time = objService.GetServerTime(); //Suppose service has method getServerTime 
+0

Hola, gracias a todos por las soluciones. Lo que hice fue agregar un servicio web como referencia. Y establezca su propiedad en dynamic.Y luego editó el constructor de la clase Reference.cs (of the webservice), para pasar la url de forma dinámica. –

Cuestiones relacionadas