Consumir un servicio web del ordenador local desde Windows Mobile
Muchos compañeros me han preguntado varias veces esta cuestión
aparentemente sencilla, pero que a mí en su momento también me
entretuvo bastante y por si a alguna otra persona le puede ayudar, lo
quería dejar definitivamente escrito.
La situación es la
siguiente. Vamos a realizar una aplicación para nuestro dispositivo
móvil, la cual va a consumir un servicio web que estará corriendo, en
un principio durante el testeo, en nuestro ordenador de desarrollo y al
cual está conectado nuestra PDA o Smartphone.
Cuando agregamos
la referencia web en nuestro proyecto de Visual Studio de Smart Device,
la cual apunta al otro proyecto de Web Service en la misma solución,
tenemos una referencia local tal que:
http://localhost:49217/WebServiceName/Service.asmx
Al
ejecutar esto en el dispositivo móvil, él entiende que localhost es él,
y que ahí no está corriendo el servicio que le indicamos, por lo que se
producirá un error. Por tanto, una vez que nos damos cuenta de ello, el
siguiente paso que habitualmente se nos ocurre, y que es lo más
natural, es cambiar en la ventana de propiedades que antes mostrábamos
la Web Reference URL, e indicarle una IP de alguna interfaz de red de
nuestro ordenador, por ejemplo:
No obstante, al hacerlo desde la ventana de propiedades lo más que obtenemos es lo siguiente:
¿Y ahora qué? Ahora viene una posible solución. En lugar de establecer
esta última IP en la ventana de propieades de forma visual, nos iremos
al fichero Reference.cs que se encuentra en el siguiente directorio:
.....\NuestroSmartDeviceProject\Web References\WebServiceName\Reference.cs
Y en el constructor de la clase contenida Service, veremos que se inicializar una propiedad llamada URL. Ésta asignación es la que debemos cambiar, y sustituir localhost por la IP deseada:
Esta tarea es la que se supone que tendría que hacer VS cuando modificamos la URL desde la ventana de propiedades.