Diferentes HostHeaders no IIS


O IIS disponibiliza um recurso chamado de Web Site desde a sua versão 6.0. Os Web Sites nada mais são do que containers para diretórios virtuais que, por sua vez, poderá conter aplicações Web ou serviços. Um dos principais benefícios que ele fornece, é o isolamento de aplicações.

Além disso, o IIS utiliza um conceito chamado de IIS Binding, que identifica como acessar um determinado diretório virtual. Com isso, podemos definir definir vários host headers (IIS Bindings) para este Web Site onde, cada um deles, identificará um diretório virtual dentro do mesmo. Um exemplo disso seria: http://secure.site.com.br e http://services.site.com.br. O IIS Binding é composto por duas partes, a saber:

  • Binding Protocol: HTTP
  • Binding Information: IPAddress, Port e HostHeader

Quando temos um Web Site que hospedará serviços WCF, devemos nos atentar a essa questão. Se tivermos mais do que um IIS Binding configurado dentro do Web Site, o runtime do WCF não saberá para qual encaminhará a requisição e, conseqüentemente, uma exceção do tipo ArgumentException será lançada, contendo a seguinte mensagem:

This collection already contains an address with scheme http.  There can be at most one address per scheme in this collection. Parameter name: item

A partir do .NET Framework 3.5, podemos fazer o uso do elemento baseAddressPrefixFilters que, quando adicionado no arquivo Web.config da aplicação onde estará o serviço, determinará qual dos host header a aplicação irá atender. O exemplo abaixo ilustra a sua utilização:

<system.serviceModel>
    <serviceHostingEnvironment>
        <baseAddressPrefixFilters>
            <add prefix=”http://teste2/”/>
        </baseAddressPrefixFilters>
    </serviceHostingEnvironment>
    <services>
        <!– configuração dos serviços –>
    </services>
</system.serviceModel>

Anúncios

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s