Webservice con información de app.config en web.config
Un título algo duro ¿no? Se trata de un problema común cuando trabajamos con Webservices. Al incluir la referencia del webservice con el que trabajamos tenemos que indicar la IP o el nombre del equipo que provee el servicio. Pero ¿Qué pasa cuando esa dirección cambia? Normalmente, que tenemos que recompilar la aplicación. Si esto hay que hacerlo en pocas ocasiones no hay problema, pero si los cambios son frecuentes lo indicado es hacer que esta dirección se pudiera configurar desde el web.config.
Esto es posible hacerlo de dos maneras, cada una con sus ventajas e inconvenientes. Las dos necesitan añadir una clave en el web.config:
La primera es utilizando la fuerza bruta. Cada vez que llamemos al Webservice cambiamos su URL. POr ejemplo:
service = new Acmeco.AcmecoService();
service.Timeout = 10000;
service.Url = ConfigurationSettings.AppSettings["MyWebServiceURL"];
(Ejemplo tomado de aquí: Setting Web Service References Dynamically )
Si llamamos al servicio en pocos sitios esta solución es completamente válida, pero si lo hacemos en muchos sitios puede ser una labor engorrosa.
Otra solución es cambiar la URL en la referencia que importa el IDE de .NET. Lo encontramos aquí:
Web References –> my_web_service –> Reference.map –> Reference.cs
Este archivo se genera automáticamente cuando añadimos la referencia así que ¡ojo! si volvemos importar la referencia porque el proveedor del servicio ha realizado cambios tendremos que volver a modificar el archivo. Una vez allí cambiamos:
this.Url = System.Configuration.ConfigurationManager.AppSettings["MyWebServiceURL"];
Si nos encontramos con que lo anterior nos da un error, tenemos que añadir la referencia System.configuration en las referencias.
Con esto tendremos un webservice cuya dirección podremos configurar dinámicamente desde el web.config

No hay comentarios so far
Leave a comment
Deja un comentario
Saltos de línea y párrafo automáticos, la dirección de correo electrónico no se mostrará, HTML permitido:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>