Diferentes HostHeaders no IIS

by Israel Aece 22. October 2008 09:06

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>

Tags: , ,

CSD | WCF

Comments

5/4/2010 10:54:20 PM #

trackback

multipleSiteBindingsEnabled

multipleSiteBindingsEnabled

Israel Aece

Comments are closed

Powered by BlogEngine.NET 1.5.0.0
Theme by Mads Kristensen

Sobre

Meu nome é Israel Aece e sou especialista em tecnologias de desenvolvimento Microsoft, atuando como desenvolvedor de aplicações para o mercado financeiro utilizando a plataforma .NET. [ Mais ]

Twitter

Host