3Metas Blog // Tag: Windows Communication Foundation
Por
Roberto Alvarado
Instalación de Servicios Windows Communication Foundation en un Servidor IIS 7
En 3Metas utilizamos las últimas tecnologías en desarrollo de software, por eso muchas de nuestras aplicaciones trabajan bajo la arquitectura de servicios (SOA). Por esta razón en uno de nuestros clientes usamos servicios de Windows Communication Foundation para compartir datos entre diferentes plataformas y aplicaciones como por ejemplo Windows Mobile, Aplicaciones WPF, Aplicaciones Silverlight y ASP.NET.
Una de las tareas que debemos realizar después de crear estos servicios es la publicación de los mismos en un servidor web para que sean expuestos y utilizados por las diferentes aplicaciones. En este pequeño tutorial publico los servicios en un servidor web IIS 7 con Windows Server 2008.
1. Se crea un sitio web, se le asigna un puerto específico, en el caso de nuestro cliente, es el puerto 81 el que utilizan los servicios WCF. Sin embargo podemos escoger cualquier puerto y verificar que este puerto este abierto en el firewall si los servicios van a estar expuestos a internet.
2. Se copian los archivos publicados de la solución de los servicios en una carpeta específica, que es la misma que se ha definido al momento de crear el sitio web en el IIS.
3. Nos aseguramos que el namespace ServiceModel este activo y registrado en nuestro servidor IIS, para ello abrimos la consola de comandos en modo administrador y ejecutamos el siguiente comando: “%windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe” -r –y
4. La ejecución de este comando nos muestra unos resultados como parece en la siguiente figura
5. Se revisan los Handler Mappings como se ve en la figura:
6. Doble clic sobre Handler Mapping, aparece la siguiente pantalla:
7. En esta pantalla revisar si existen las entradas para la definición de los *.svc, ya que en nuestro caso los Hosting de los servicios WCF son en IIS con ASP.NET.
8. Para crear estos handlers hacemos clic derecho sobre la lista, nos muestra el siguiente menú:
9. Seleccionamos la primera opción Add Managed Handler que nos muestra la siguiente pantalla en la cual colocamos los datos a ingresar:
8. Los valores a colocar para Request path: *.svc, Type: System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Name: svc-Integrated. Las restricciones las dejamos por default. Este es el primer registro. Debemos colocar otros 2 registros.
9. Los valores a colocar para Request path: *.svc, Type: %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll, Name: svc-ISAPI-2.0. Las restricciones las dejamos por default. Este es el segundo registro.
10. Los valores a colocar para Request path: *.svc, Type: %SystemRoot%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll, Name: svc-ISAPI-2.0-64. Las restricciones las dejamos por default. Este es el tercer registro si es para un servidor de 64 bits.
11. Luego verificamos si nuestros servicios quedaron funcionando de manera correcta, en la pantalla siguiente:
12. Seleccionamos un servicio, como el que se muestra en la figura, clic derecho y en el menú que aparece le damos Browse, lo cual nos abre una ventana del explorador de internet para verificar si nuestro servicio está funcionando de manera correcta.
13. El explorador de internet nos debe mostrar una pantalla como la siguiente: indicando que el servicio está funcionando correctamente.
14. El siguiente paso es corregir en el web.config del sitio ASP.NET que hostea u hospeda los servicios WCF, las cadenas de conexión a las bases de datos que utilizamos para que nuestros servicios puedan funcionar de manera correcta.
En nuestro caso verificamos la sección ConnectionStrings del web.config y colocamos los valores correctos: <connectionStrings>
<add name=”XXXXXNETDB” connectionString=”Data Source=YYYYY;Initial Catalog=MiBaseDatos;User;Password=3Metas; Timeout=999999″ providerName=”System.Data.SqlClient” />
<add name=”XXXXXNETDBII” connectionString=”Data Source=YYYYY;Initial Catalog=MiOtraDB;User;Password=3Metas; Timeout=999999″ providerName=”System.Data.SqlClient” />
<add name=”ZZZZDB” connectionString=”Data Source=YYYYY;Initial Catalog=JJJJJJ;User;Password=3Metas; Timeout=999999″ providerName=”System.Data.SqlClient” />
</connectionStrings>
15. El siguiente paso es ir a la solución que consume los servicios que estamos exponiendo en el IIS en nuestra solución ASP.NET a través de los archivos *.svc y colocar la dirección correcta de cada uno de los servicios en el app.config si es una aplicación Windows, o en el web.config si es una aplicación web.
Verificamos y cambiamos el endpoint de los Servicios WCF que estemos exponiendo en nuestra aplicación :
<endpoint address=”http://servidor:81/ServicioRendimientos.svc”
binding=”wsHttpBinding” bindingConfiguration=”WSHttpBinding_IServicioRendimientos”
contract=”ServicioRendimientosClient.IServicioRendimientos”
name=”WSHttpBinding_IServicioRendimientos”>
<identity>
<dns value=”localhost” />
</identity>
</endpoint>
16. Como podemos observar en el tag address=http://servidor:81/ServicioRendimientos.svc, hemos cambiado a servidor:81 que es el nombre del servidor y el puerto por donde definimos en el sitio que se va a exponer los servicios WCF.
17. Probar nuestra aplicación que consume los servicios para comprobar que todo esté funcionando como debe ser.
Bueno eso es todo por ahora, espero haber podido ayudarles en este proceso de instalación de los servicios WCF en un servidor IIS.









