Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Desarrollar e implementar un servicio de Windows Communication Foundation (WCF) hospedado en Internet Information Services (IIS) consta de las siguientes tareas:
Asegúrese de que IIS, ASP.NET, WCF y el componente de activación de WCF estén instalados y registrados correctamente.
Cree una nueva aplicación de IIS o reutilice una aplicación de ASP.NET existente.
Cree un archivo .svc para el servicio WCF.
Implemente la implementación del servicio en la aplicación IIS.
Configure el servicio WCF.
Para obtener un tutorial detallado sobre cómo crear un servicio WCF hospedado en IIS, consulte How to: Host a WCF Service in IIS (Cómo: Hospedar un servicio WCF en IIS).
Asegúrese de que IIS, ASP.NET y WCF estén instalados y registrados correctamente.
WCF, IIS y ASP.NET deben instalarse para que los servicios WCF hospedados en IIS funcionen correctamente. Los procedimientos para instalar WCF (como parte de .NET Framework), ASP.NET y IIS varían en función del sistema operativo. Para obtener más información sobre cómo instalar WCF y .NET Framework, consulte Instalación de .NET Framework para desarrolladores. Para instalar IIS en Windows 10, abra Programas y características en el Panel de control y seleccione Activar o desactivar características de Windows. En Características de Windows, seleccione Internet Information Services y, a continuación, elija Aceptar.
Puede encontrar instrucciones para instalar IIS en otros sistemas operativos en Instalar IIS en Windows Vista y Windows 7 e Instalar IIS 8.5 en Windows Server 2012 R2.
El proceso de instalación de .NET Framework registra automáticamente WCF con IIS si IIS ya está presente en el equipo. Si IIS se instala después de .NET Framework, se requiere un paso adicional para registrar WCF con IIS y ASP.NET. Puede hacerlo de la siguiente manera, en función del sistema operativo:
Windows 7 y Windows Server 2003: usar la herramienta de registro serviceModel (ServiceModelReg.exe) para registrar WCF con IIS. Para usar esta herramienta, escriba
ServiceModelReg.exe /i /x
en Símbolo del sistema para desarrolladores de Visual Studio o PowerShell de Visual Studio para desarrolladores.Windows 7: Por último, debe comprobar que ASP.NET está configurado para usar .NET Framework versión 4 o posterior. Para ello, ejecute la herramienta ASPNET_Regiis con la
–i
opción . Para obtener más información, consulte ASP.NET herramienta de registro de IIS.
Creación de una nueva aplicación de IIS o reutilización de una aplicación de ASP.NET existente
Los servicios WCF hospedados en IIS deben residir dentro de una aplicación IIS. Puede crear una nueva aplicación IIS para hospedar servicios WCF exclusivamente. Como alternativa, puede implementar un servicio WCF en una aplicación existente que ya hospeda contenido de ASP.NET 2.0 (como páginas de .aspx y servicios web de ASP.NET [ASMX]). Para obtener más información sobre estas opciones, vea las secciones "Hospedaje de WCF en paralelo con ASP.NET" y "Hospedaje de servicios WCF en modo de compatibilidad ASP.NET" en servicios WCF y ASP.NET.
Tenga en cuenta que IIS 6.0 y versiones posteriores reinician periódicamente una aplicación de programación aislada orientada a objetos. El valor predeterminado es 1740 minutos. El valor máximo admitido es de 71 582 minutos. Este reinicio se puede deshabilitar. Para obtener más información sobre esta propiedad, vea PeriodicRestartTime.
Crear un archivo .svc para el servicio WCF
Los servicios WCF hospedados en IIS se representan como archivos de contenido especiales (archivos .svc) dentro de la aplicación IIS. Este modelo es similar a la forma en que las páginas ASMX se representan dentro de una aplicación IIS como archivos .asmx. Un archivo .svc contiene una directiva de procesamiento específica de WCF (@ServiceHost) que permite que la infraestructura de hospedaje de WCF active los servicios hospedados en respuesta a los mensajes entrantes. La sintaxis más común para un archivo .svc se encuentra en la instrucción siguiente.
<% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %>
Consta de la directiva @ServiceHost y un único atributo, Service
. El valor del Service
atributo es el nombre de tipo de Common Language Runtime (CLR) de la implementación del servicio. El uso de esta directiva es básicamente equivalente a crear un host de servicio mediante el código siguiente.
new ServiceHost( typeof( MyNamespace.MyServiceImplementationTypeName ) );
También se puede realizar una configuración de hospedaje adicional, como crear una lista de direcciones base para el servicio. También puede usar un elemento personalizado ServiceHostFactory para ampliar la directiva y emplearla con soluciones de hospedaje personalizadas. Las aplicaciones IIS que hospedan servicios WCF no son responsables de administrar la creación y el ciclo de vida de las instancias ServiceHost. La infraestructura de hospedaje wcF administrada crea la instancia necesaria ServiceHost dinámicamente cuando se recibe la primera solicitud para el archivo .svc. La instancia no se libera hasta que se cierra explícitamente mediante código o cuando se recicla la aplicación.
Para obtener más información sobre la sintaxis de los archivos .svc, vea @ServiceHost.
Desplegar la Implementación del Servicio en la aplicación de IIS
Los servicios WCF hospedados en IIS usan el mismo modelo de compilación dinámica que ASP.NET 2.0. Al igual que con ASP.NET, puede implementar el código de implementación para los servicios WCF hospedados en IIS de varias maneras en varias ubicaciones, como se indica a continuación:
Como un archivo .dll precompilado localizado en la caché global de ensamblados (GAC) o en el directorio \bin de la aplicación. Los archivos binarios precompilados no se actualizan hasta que se implementa una nueva versión de la biblioteca de clases.
Como archivos de origen no compilados ubicados en el directorio \App_Code de la aplicación. Los archivos de origen ubicados en este directorio son necesarios dinámicamente al procesar la primera solicitud de la aplicación. Cualquier cambio en los archivos del directorio \App_Code provoca que toda la aplicación sea reciclada y recompilada cuando se recibe la siguiente solicitud.
Como código sin compilar colocado directamente en el archivo .svc. El código de implementación también se puede ubicar en línea en el archivo .svc del servicio, después de la directiva @ServiceHost. Cualquier cambio en el código en línea provoca que la aplicación se recicle y se recompile cuando se reciba la siguiente solicitud.
Para obtener más información sobre el modelo de compilación de ASP.NET 2.0, consulte ASP.NET Información general sobre la compilación.
Configuración del servicio WCF
Los servicios WCF hospedados en IIS almacenan su configuración en las aplicaciones Web.config archivo. Los servicios hospedados en IIS usan los mismos elementos de configuración y sintaxis que los servicios WCF hospedados fuera de IIS. Sin embargo, las restricciones siguientes son únicas para el entorno de hospedaje de IIS:
Direcciones base para los servicios hospedados en IIS.
Las aplicaciones que hospedan servicios WCF fuera de IIS pueden controlar la dirección base de los servicios que hospedan pasando un conjunto de URI de dirección base al ServiceHost constructor o proporcionando un <elemento host> en la configuración del servicio. Los servicios hospedados en IIS no tienen la capacidad de controlar su dirección base; la dirección base de un servicio hospedado en IIS es la dirección de su archivo .svc.
Direcciones de extremos para servicios hospedados en IIS
Cuando se hospeda en IIS, las direcciones de punto de conexión siempre se consideran relativas a la dirección del archivo .svc que representa el servicio. Por ejemplo, si la dirección base de un servicio WCF es http://localhost/Application1/MyService.svc
con la siguiente configuración de punto de conexión:
<endpoint address="anotherEndpoint" />
Esto proporciona un punto de conexión al que se puede acceder en http://localhost/Application1/MyService.svc/anotherEndpoint
.
Del mismo modo, el elemento de configuración del punto de conexión que usa una cadena vacía como dirección relativa proporciona un punto de conexión accesible en http://localhost/Application1/MyService.svc
, que es la dirección base.
<endpoint address="" />
Siempre debe utilizar direcciones de extremo relativas para los extremos de servicio hospedados en IIS. Proporcionar una dirección de punto de conexión completamente cualificada (por ejemplo, http://localhost/MyService.svc
) puede provocar errores en la implementación del servicio si la dirección del punto de conexión no apunta a la aplicación IIS que hospeda el servicio que expone el punto de conexión. El uso de direcciones de punto de conexión relativas para los servicios hospedados evita estos posibles conflictos.
Transportes disponibles
Los servicios WCF hospedados en IIS 5.1 e IIS 6.0 están restringidos al uso de la comunicación basada en HTTP. En estas plataformas IIS, la configuración de un servicio hospedado para usar un enlace no HTTP produce un error durante la activación del servicio. Para IIS 7.0, los transportes admitidos incluyen HTTP, Net.TCP, Net.Pipe, Net.MSMQ y msmq.formatname para la compatibilidad con versiones anteriores con las aplicaciones MSMQ existentes.
Seguridad de transporte HTTP
Los servicios WCF hospedados en IIS pueden usar la seguridad de transporte HTTP (por ejemplo, esquemas de autenticación HTTPS y HTTP, como La autenticación básica, implícita y integrada de Windows), siempre que el directorio virtual IIS que contenga el servicio admita esa configuración. Los ajustes de seguridad de transporte HTTP en la vinculación de un punto de conexión alojado deben ser consistentes con los ajustes de seguridad de transporte en el directorio virtual de IIS que lo contiene.
Por ejemplo, un punto de conexión WCF configurado para usar la autenticación implícita HTTP debe residir en un directorio virtual de IIS que también esté configurado para permitir la autenticación implícita HTTP. Las combinaciones no coincidentes de la configuración de IIS y la configuración del punto de conexión WCF producen un error durante la activación del servicio.