Compartilhar via


<serviceHostingEnvironment>

Esse elemento define o tipo que o ambiente de hospedagem de serviço instancia para um transporte específico. Se esse elemento estiver vazio, o tipo padrão será usado. Esse elemento só pode ser usado nos arquivos de configuração no nível do aplicativo ou do computador.

<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 e elementos

As seções a seguir descrevem atributos, elementos filho e elementos pai.

Atributos

Atributo Descrição
aspNetCompatibilityEnabled Um valor booliano que indica se o modo de compatibilidade do ASP.NET foi ativado para o aplicativo atual. O padrão é false.

Quando esse atributo for definido como true, as solicitações aos serviços WCF (Windows Communication Foundation) fluirão pelo pipeline HTTP do ASP.NET e a comunicação por protocolos não HTTP será proibida. Para obter mais informações, consulte Serviços WCF e ASP.NET.
minFreeMemoryPercentageToActivateService Um inteiro que especifica a quantidade mínima de memória livre que deve estar disponível para o sistema, antes que um serviço WCF possa ser ativado. Cuidado: especificar esse atributo juntamente com a confiança parcial no arquivo web.config de um serviço WCF resultará em um SecurityException quando o serviço for executado.
multipleSiteBindingsEnabled Um valor booliano que especifica se várias associações de IIS por site estão habilitadas.

O IIS consiste em sites da Web, que são contêineres para aplicativos virtuais que contêm diretórios virtuais. O aplicativo em um site pode ser acessado por meio de uma ou mais associações do IIS. Uma associação do IIS fornece duas informações: um protocolo de associação e informações de associação. O protocolo de associação define o esquema sobre o qual a comunicação ocorre e as informações de associação são as informações usadas para acessar o site. Um exemplo de protocolo de associação pode ser HTTP, enquanto as informações de associação podem conter um endereço IP, porta, cabeçalho de host etc.

O IIS dá suporte à especificação de várias associações de IIS por site, o que resulta em vários endereços básicos por esquema. No entanto, um serviço WCF (Windows Communication Foundation) hospedado em um site permite a associação a apenas um baseAddress por esquema.

Para habilitar várias associações de IIS por site para um serviço WCF (Windows Communication Foundation), defina esse atributo como true. Observe que há suporte para várias associações de site apenas para o protocolo HTTP. O endereço dos pontos de extremidade no arquivo de configuração precisa ser um URI completo.

Elementos filho

Elemento Descrição
<baseAddressPrefixFilters> Uma coleção de elementos de configuração que especifica filtros de prefixo para os endereços básicos usados pelo host de serviço.
<serviceActivations> Uma seção de configuração que descreve as configurações de ativação.
<transportConfigurationTypes> Uma coleção de elementos de configuração que identificam o tipo de um transporte específico.

Elementos pai

Elemento Descrição
serviceModel O elemento raiz de todos os elementos de configuração do WCF (Windows Communication Foundation).

Comentários

Por padrão, os serviços WCF são executados lado a lado com o ASP.NET nos AppDomain (domínios de aplicativo) hospedados. Embora o WCF e o ASP.NET possam coexistir no mesmo AppDomain, as solicitações do WCF não são processadas pelo pipeline HTTP do ASP.NET por padrão. Como resultado, vários elementos da plataforma de aplicativos ASP.NET não ficam disponíveis para os serviços WCF. Eles incluem:

  • Autorização de Arquivo/URL do ASP.NET

  • Personificação do ASP.NET

  • Estado de sessão baseada em cookie

  • HttpContext.Current

  • Extensibilidade de pipeline por meio de HttpModule personalizado

Se os serviços WCF precisarem funcionar no contexto do ASP.NET e se comunicar somente por HTTP, você poderá usar o modo de compatibilidade ASP.NET do WCF. Esse modo será ativado quando o atributo aspNetCompatibilityEnabled for definido como true no nível do aplicativo. As implementações de serviço devem declarar sua capacidade de execução no modo de compatibilidade usando a classe AspNetCompatibilityRequirementsAttribute. Quando o modo de compatibilidade estiver habilitado,

  • a Autorização de Arquivo/URL do ASP.NET é imposta antes da autorização do WCF. Uma decisão de autorização baseia-se na identidade no nível de transporte da solicitação. As identidades no nível da mensagem são ignoradas.

  • As operações de serviço WCF começam a ser executadas no contexto de representação do ASP.NET. Se ambas as representações do ASP.NET e do WCF estiverem habilitadas para um serviço específico, o contexto de representação do WCF se aplicará.

  • HttpContext.Current pode ser usado pelo código de serviço WCF, sendo que os serviços são impedidos de expor pontos de extremidade não HTTP.

  • As solicitações do WCF são processadas pelo pipeline do ASP.NET. HttpModules que foram configurados para agir em solicitações de entrada também podem processar solicitações do WCF. Isso pode incluir componentes da plataforma ASP.NET (por exemplo, SessionStateModule), bem como módulos personalizados de terceiros.

Exemplo

O exemplo de código a seguir mostra como habilitar o modo de compatibilidade do ASP.

Código

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

Confira também