Hospedar un adaptador en IIS mediante el SDK del adaptador de LOB de WCF
Esta sección contiene información sobre cómo hospedar un adaptador creado mediante el SDK del adaptador de línea de negocio (LOB) de Microsoft Windows Communication Foundation (WCF) en Internet Information Services (IIS). Para obtener más información sobre otras opciones de hospedaje, consulte Servicios de hospedaje.
Uso de IIS y ASP.NET
Puede usar IIS con ASP.NET habilitado para publicar adaptadores creados con el SDK del adaptador de LOB de WCF. Para hospedar un adaptador creado por el SDK del adaptador de LOB de WCF, configure Internet Information Services (IIS) para publicar servicios WCF. A continuación, considere cómo usar el adaptador de WCF con ASP.NET.
Al hospedar un servicio WCF en IIS, hay dos modos de hospedaje disponibles: en paralelo y modo decompatibilidad A SP.NET. El modo de hospedaje predeterminado es en paralelo. El modo en paralelo se comporta de forma coherente con otras soluciones de hospedaje de WCF. Por lo tanto, un servicio WCF hospedado en IIS se comporta igual que uno hospedado en una aplicación de consola. Sin embargo, esto puede no ser deseable porque los desarrolladores web podrían esperar un comportamiento similar a ASP.NET. Por ejemplo, en modo en paralelo, WCF no cumple las reglas de autorización basadas en direcciones URL especificadas en el <system.web> <authorization>
elemento de configuración de web.config.
ASP.NET modo de compatibilidad permite al servicio WCF usar todas las características de ASP.NET y comportarse igual que una página ASPX; Sin embargo, debe realizar pasos adicionales al crear el adaptador WCF para habilitar esta funcionalidad. Para más información, consulte:
Hospedaje en Internet Information Services
Usar el Asistente para desarrollo del servicio adaptador de WCF
Use el Asistente para desarrollo de servicios de adaptador de LOB de WCF para automatizar la creación de un proyecto web para hospedar el adaptador en Internet Information Services (IIS). A continuación, el adaptador hospedado se puede consumir mediante clientes mediante Windows Communication Framework (WCF) o servicios web.
Publicación de un adaptador como un servicio WCF hospedado en IIS
Abra Visual Studio. En el menú Archivo , seleccione Nuevo y, a continuación, seleccione Sitio web.
En Plantillas, seleccione Visual C# y seleccione Servicio de adaptador de WCF.
Escriba la carpeta para guardar la solución y, a continuación, seleccione Aceptar. Se inicia el Asistente para desarrollo del servicio adaptador de WCF .
En la página Introducción, haga clic en Siguiente.
En la página Elegir operaciones , especifique el enlace, el contrato y las operaciones que se van a usar para este servicio hospedado.
En la lista Seleccionar un enlace , seleccione el enlace de adaptador que se va a usar y, a continuación, haga clic en Configurar. Esto muestra el cuadro de diálogo Configurar adaptador . Proporcione los valores necesarios para invocar el adaptador y recuperar los metadatos de la operación.
En la pestaña Seguridad , seleccione el tipo de credencial de cliente que se va a usar al pasar las credenciales de cliente al adaptador.
Tipo de credencial Descripción None El cliente no necesita presentar credenciales. Windows El cliente usará las credenciales de Windows. Nombre de usuario El cliente proporcionará un nombre de usuario y una contraseña. Certificate El cliente se autenticará mediante un certificado X.509. Si se establece este valor, haga clic en Examinar en el área Certificado de cliente y, a continuación, seleccione el certificado que se va a usar. En la pestaña Propiedades del URI , especifique los parámetros de URI requeridos por el adaptador. Las entradas que se muestran en esta pestaña varían en función de las propiedades expuestas en la
ConnectionUri Properties
clase del adaptador.En la pestaña Propiedades de enlace, especifique valores para las propiedades de enlace necesarias para el adaptador. La sección General contiene configuraciones comunes, como los valores de tiempo de espera. Las propiedades adicionales se enumeran en función de las propiedades personalizadas expuestas en la
AdapterBinding
clase .
Una vez que haya especificado los valores de configuración, haga clic en Conectar.
En la lista Seleccionar tipo de contrato , seleccione el contrato que se va a usar. Esto rellena el control Seleccionar un árbol de categorías con una lista de categorías y operaciones disponibles en este adaptador. Si el adaptador implementa la funcionalidad de búsqueda a través de una
MetadataRetrievalClient
clase, puede escribir un término de búsqueda en el campo Buscar en categoría para devolver solo categorías y operaciones que contengan el término de búsqueda.Nota
Solo las operaciones salientes están disponibles para su selección.
En el cuadro Categorías y operaciones disponibles , seleccione los elementos que se van a agregar y, a continuación, haga clic en Agregar. Una vez que haya agregado los elementos deseados, haga clic en Siguiente.
En la página Configurar comportamientos de servicio y punto de conexión , establezca los comportamientos deseados para este adaptador.
La sección Configuración del comportamiento del servicio contiene entradas que controlan el comportamiento del servicio. Después de ejecutar el asistente, puede modificar los comportamientos de servicio seleccionados editando el archivo web.config.
Propiedad Descripción EnableMetadataExchange Si se establece este valor en True , se habilita la publicación de metadatos de servicio en las solicitudes de cliente. Esto también se puede establecer modificando <serviceMetadata httpGetEnabled=""> en web.config. El valor predeterminado es False IncludeExceptionDetailsinFault Si se establece este valor en True , se devuelve información de excepción administrada al cliente en errores soap. Esto también se puede establecer modificando <serviceDebug medianteincludeExceptionDetailInFaults=""> en web.config. El valor predeterminado es False. Nombre Nombre de la configuración del comportamiento del servicio. UseServiceCertificate Este valor determina si el servicio usará un certificado X.509 para autenticarse en el proceso de cliente. El valor predeterminado es true. FindValue Este valor se usa para buscar un certificado X.509 específico en el almacén de certificados. Esto también se puede establecer modificando <serviceCredentials findValue=""> en web.config Nota: Especifique un valor para esta propiedad solo si UseServiceCertificate está establecido en True. StoreLocation Este valor especifica la ubicación del almacén del sistema para buscar el certificado especificado. Esto también se puede establecer modificando <serviceCredentials storeLocation=""> en web.config. Nota: Especifique un valor para esta propiedad solo si UseServiceCertificate está establecido en True. StoreName Este valor especifica el almacén del sistema específico para buscar el certificado especificado. Esto también se puede establecer modificando <serviceCredentials storeName=""> en web.config Nota: Especifique un valor para esta propiedad solo si UseServiceCertificate está establecido en True. X509FindType Tipo de búsqueda que se va a usar con findValue especificado anteriormente para buscar el certificado específico que se va a usar. Esto también se puede establecer modificando <serviceCredentials x509FindType=""> en web.config Nota: Especifique un valor para esta propiedad solo si UseServiceCertificate está establecido en True. La sección Configuración del comportamiento del punto de conexión controla el comportamiento del punto de conexión.
Propiedad Descripción Nombre Nombre del comportamiento del punto de conexión AuthenticationType Este valor indica al adaptador dónde obtener las credenciales de cliente del documento entrante. Para permitir que los clientes especifiquen un certificado de cliente para autenticarse en el servicio, establézcalo en ClientCredentialUsernamePassword. Para permitir que los clientes especifiquen el nombre de usuario y la contraseña como parte del encabezado HTTP, establézcalo en HTTPUsernamePassword. Para permitir que los clientes especifiquen credenciales a través de la interfaz ClientCredential, establézcalo en Automático. Si se produce un error, los clientes pueden pasar credenciales como parte del encabezado HTTP.
Este valor también se puede establecer modificando < el adaptador endpointBehaviorSecurityBridgeType> en web.config. El valor predeterminado es Automático.UsernameHeader Especifica el nombre del encabezado que se usará para pasar el nombre de usuario al servicio. Para obtener más información sobre los encabezados HTTP, vea "Compatibilidad con encabezados HTTP y SOAP personalizados" en . https://go.microsoft.com/fwlink/?LinkId=106692
Este valor también se puede establecer modificando <endpointBehavior usernameHttpHeader> en web.config. Nota: Debe especificar un valor para esta propiedad si AuthenticationType está establecido en HTTPUserNamePassword. Si se establece en Automático, esta propiedad es opcional.PasswordHeader Especifica el nombre del encabezado que se usará para pasar la contraseña de usuario al servicio. Para obtener más información sobre los encabezados HTTP, vea "Compatibilidad con encabezados HTTP y SOAP personalizados" en . https://go.microsoft.com/fwlink/?LinkId=106692
Este valor también se puede establecer modificando <endpointBehavior passwordHttpHeader< en web.config. Nota: Debe especificar un valor para esta propiedad si AuthenticationType está establecido en HTTPUserNamePassword. Si se establece en Automático, esta propiedad es opcional.Después de establecer el comportamiento deseado, haga clic en Siguiente para continuar.
En la página Configurar enlace de punto de conexión de servicio y dirección , puede configurar las propiedades de dirección y enlace para los contratos. Seleccione el contrato en la lista Seleccionar un contrato para configurar y, a continuación, escriba los valores deseados en el cuadro de diálogo Configurar la dirección y el enlace del contrato .
Seleccione la entrada BindingConfiguration en Propiedades de enlace. El asistente solo admite el enlace HTTP básico, por lo que el campo de configuración de enlace se establece automáticamente en System.ServiceModel.Configuration.BasicHttpBindingElement. Para cambiar las propiedades de configuración de este enlace, haga clic en el botón de puntos suspensivos ... . Para usar un canal de comunicación seguro, siempre debes establecer la propiedad Mode en Transport. Este es el valor predeterminado.
Seleccione EndpointName y escriba el nombre deseado del punto de conexión.
Para aplicar los cambios, haga clic en Aplicar.
Para continuar, haga clic en Siguiente. En la página Resumen se muestra una estructura de árbol de las operaciones del adaptador seleccionadas.
Revise el resumen y, a continuación, haga clic en Finalizar.
El asistente crea un proyecto web y agrega los siguientes archivos.
Archivo Descripción .svc Archivo de servicio que hace referencia al proxy WCF. .cs Implementa el proxy WCF. web.config Contiene < elementos endpoint, <bindings> y <behaviors> para <el sistema. ServiceModel> Publique el proyecto de servicio WCF.
Haga clic con el botón derecho en el proyecto en Explorador de soluciones y, a continuación, haga clic en Publicar.
En el cuadro de diálogo Publicar sitio web , especifique la dirección URL de destino del servicio WCF.
Seleccione Permitir que se actualice este sitio precompilado.
Seleccione Usar nombres fijos y ensamblados de página única.
Seleccione Enable strong naming on precompiled assemblies (Habilitar nomenclatura segura en ensamblados precompilados) y, a continuación, especifique la clave de firma que se va a usar.
Para publicar el sitio web, haga clic en Aceptar.
Compruebe que el servicio se ha publicado correctamente.
Inicie la Consola de administración de IIS. Haga clic en Inicio, seleccione Herramientas administrativasy, a continuación, haga clic en Internet Information Services.
Vaya al nodo donde publicó el servicio. Si el servicio se publicó como http://localhost/myservice, vaya a Internet Information Services>Nombre> de equipoSitios web predeterminados>del sitio> webmyservice.
En el panel derecho, haga clic con el botón derecho en el archivo .svc y, a continuación, haga clic en Examinar. La página web se muestra con información sobre el servicio. Ahora puede consumir este servicio mediante llamadas de servicio WEB o WCF desde aplicaciones cliente.
Seguridad
Cuando el adaptador se hospeda dentro de un servicio, las llamadas desde aplicaciones cliente usan el Puente de seguridad del adaptador para pasar las credenciales de cliente al adaptador.
Cuando un cliente WCF envía autenticación a un servicio WCF, normalmente el servicio consume la autenticación. Sin embargo, en el caso de un adaptador, la idea es capturar la información de autenticación para su uso con el sistema LOB subyacente. Esto se implementa a través del puente de seguridad del adaptador, que se muestra como un comportamiento de punto de conexión. Como desarrollador de adaptadores, no es necesario implementar nada para aprovechar esta funcionalidad; Sin embargo, al implementar el adaptador, debe tener en cuenta cómo el cliente proporcionará credenciales al servicio.
Si usa seguridad de nivel de mensaje, el puente de seguridad del adaptador puede recuperar los clientCredentials enviados por la aplicación cliente en cualquier enlace. Si usa el enlace HTTP básico, puede seleccionar usar un encabezado personalizado para pasar el nombre de usuario y la información de contraseña. Se recomienda usar la clase ClientCredential proporcionada por WCF para pasar credenciales; sin embargo, muchas aplicaciones cliente de servicio web deberán usar un encabezado personalizado para pasar credenciales.
A continuación se muestra una configuración de ejemplo en la que el adaptador busca credenciales en clientCredentials que proporciona la aplicación cliente. Si no se encuentra ninguno, el adaptador busca en los encabezados de solicitud HTTP especificados.
<endpointBehaviors>
<behavior name="customEndpointBehavior">
<endpointBehavior usernameHttpHeader="UNHdr" passwordHttpHeader="PWHdr"
adapterSecurityBridgeType="Auto" />
</behavior>
</endpointBehaviors>