Compartir por


<serviceHostingEnvironment>

Este elemento define el tipo en el que el entorno de hospedaje de servicios crea una instancia para un transporte determinado. Si este elemento está vacío, se usa el tipo predeterminado. Este elemento solo se puede usar en los archivos de configuración de la aplicación o del nivel de máquina.

<configuration>
  <system.serviceModel>
    <serviceHostingEnvironment>

Syntax

<serviceHostingEnvironment aspNetCompatibilityEnabled="Boolean"
                           minFreeMemoryPercentageToActivateService="Integer"
                           multipleSiteBindingsEnabled="Boolean">
  <baseAddressPrefixFilters>
    <add prefix="string" />
  </baseAddressPrefixFilters>
  <serviceActivations>
    <add factory="String"
         service="String" />
  </serviceActivations>
  <transportConfigurationTypes>
    <add name="String"
         transportConfigurationType="String" />
  </transportConfigurationTypes>
</serviceHostingEnvironment>

Atributos y elementos

En las siguientes secciones se describen los atributos, los elementos secundarios y los elementos primarios.

Attributes

Atributo Description
aspNetCompatibilityEnabled Valor booleano que indica si el modo de compatibilidad de ASP.NET se ha activado para la aplicación actual. El valor predeterminado es false.

Cuando este atributo se establece trueen , las solicitudes a los servicios de Windows Communication Foundation (WCF) fluyen a través de la canalización HTTP de ASP.NET y se prohíbe la comunicación a través de protocolos que no son HTTP. Para obtener más información, consulte Servicios y ASP.NET WCF.
minFreeMemoryPercentageToActivateService Entero que especifica la cantidad mínima de memoria libre que debe estar disponible para el sistema, antes de que se pueda activar un servicio WCF. Precaución: Al especificar este atributo junto con la confianza parcial en el archivo web.config de un servicio WCF, se producirá una SecurityException excepción cuando se ejecute el servicio.
multipleSiteBindingsEnabled Valor booleano que especifica si se habilitan varios enlaces IIS por sitio.

IIS consta de sitios web, que son contenedores para aplicaciones virtuales que contienen directorios virtuales. Se puede acceder a la aplicación de un sitio a través de uno o varios enlaces IIS. Un enlace de IIS proporciona dos fragmentos de información: un protocolo de enlace e información de enlace. El protocolo de enlace define el esquema sobre el que se produce la comunicación y la información de enlace es la información que se usa para acceder al sitio. Un ejemplo de un protocolo de enlace puede ser HTTP, mientras que la información de enlace puede contener una dirección IP, puerto, encabezado de host, etc.

IIS admite la especificación de varios enlaces IIS por sitio, lo que da como resultado varias direcciones base por esquema. Sin embargo, un servicio de Windows Communication Foundation (WCF) hospedado en un sitio permite el enlace a solo una baseAddress por esquema.

Para habilitar varios enlaces IIS por sitio para un servicio de Windows Communication Foundation (WCF), establezca este atributo trueen . Observe que solo se admite el enlace de varios sitios para el protocolo HTTP. La dirección de los puntos de conexión del archivo de configuración debe ser un URI completo.

Elementos secundarios

Elemento Description
<baseAddressPrefixFilters> Colección de elementos de configuración que especifican filtros de prefijo para las direcciones base usadas por el host de servicio.
<serviceActivations> Sección de configuración que describe la configuración de activación.
<transportConfigurationTypes> Colección de elementos de configuración que identifican el tipo de un transporte determinado.

Elementos primarios

Elemento Description
serviceModel Elemento raíz de todos los elementos de configuración de Windows Communication Foundation (WCF).

Observaciones

De forma predeterminada, los servicios WCF se ejecutan en paralelo con ASP.NET en dominios de aplicación hospedados (AppDomain). Aunque WCF y ASP.NET pueden coexistir en el mismo AppDomain, las solicitudes WCF no se procesan de forma predeterminada por la canalización HTTP de ASP.NET. Como resultado, varios elementos de la plataforma de aplicaciones de ASP.NET no están disponibles para los servicios WCF. Entre ellas se incluyen

  • autorización de archivo o dirección URL de ASP.NET

  • ASP.NET suplantación

  • Estado de sesión basado en cookies

  • HttpContext.Current

  • Extensibilidad de canalización a través de HttpModule personalizado

Si los servicios WCF necesitan funcionar en el contexto de ASP.NET y comunicarse solo a través de HTTP, puede usar el modo de compatibilidad ASP.NET wcF. Este modo está activado cuando el aspNetCompatibilityEnabled atributo se establece true en en el nivel de aplicación. Las implementaciones de servicio deben declarar su capacidad de ejecutarse en modo de compatibilidad mediante la AspNetCompatibilityRequirementsAttribute clase . Cuando el modo de compatibilidad está habilitado,

  • ASP.NET autorización de archivo/dirección URL se aplica antes de la autorización de WCF. Una decisión de autorización se basa en la identidad de nivel de transporte de la solicitud. Se omiten las identidades en el nivel de mensaje.

  • Las operaciones del servicio WCF comienzan a ejecutarse en el contexto de suplantación de ASP.NET. Si tanto ASP.NET suplantación como la suplantación de WCF están habilitadas para un servicio específico, se aplica el contexto de suplantación de WCF.

  • HttpContext.Current se puede usar desde el código de servicio WCF y se impide que los servicios exponan puntos de conexión que no son HTTP.

  • La canalización de ASP.NET procesa las solicitudes WCF. Los httpModules que se han configurado para actuar en las solicitudes entrantes también pueden procesar solicitudes WCF. Pueden incluir ASP.NET componentes de plataforma (por ejemplo, SessionStateModule), así como módulos de terceros personalizados.

Example

En el ejemplo de código siguiente se muestra cómo habilitar el modo de compatibilidad de ASP.

Código

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

Consulte también