WCF por trás do balanceador de carga - como configurar

Temos alguns servidores da Web usando o balanceador de carga. As máquinas estão executando o IIS6 na porta 81. Externamente, o site pode ser acessado usando a porta 80. O nome externo e o nome da máquina são diferentes.

Estamos ficando

System.ServiceModel.EndpointNotFoundException: The message with To '' cannot be processed at the receiver, due to an AddressFilter mismatch at the EndpointDispatcher. Check that the sender and receiver's EndpointAddresses agree.

Parte relevante do web.config é:

  

Nós tentamos adicionar o listenUri, mas isso não resolveu nossos problemas.

Alguma ideia?

0

2 Respostas

[ServiceBehavior(AddressFilterMode=AddressFilterMode.Any)]

Colocar esse atributo em serviço resolve o problema.

0
adicionado
Uma discussão mais detalhada dos problemas está localizada aqui stackoverflow.com/questions/274984/…
adicionado o autor Richard Collette, fonte

Qual é o balanceador de carga específico? Usando um F5 BIG-IP, conseguimos que ele funcionasse com bastante facilidade, mas estávamos usando a mesma porta e (relativa) uri no nlb como máquinas individuais (para que possamos tratar uma máquina individual da mesma forma que a fazenda, se quisermos). Obviamente, cada máquina tem um nome diferente, mas essa configuração também permite que você teste servidores individuais falsificando o host - por exemplo, editando o arquivo HOSTS para apontar [o nome do farm] para [test server IP].

A maior dor que tivemos foi SSL; Usando a segurança TransportWithMessageCredential, o WCF recusa as conexões http de entrada - então tivemos que configurar o nlb para criptografar novamente entre o nlb e o nó do servidor - mas não um grande problema.

O único outro problema que tivemos foi com hospedagem WCF dentro do IIS, e WCF não sendo capaz de identificar corretamente o site pretendido (embora o IIS estava bem) sobre http (mas bem sobre https). Para consertar isso, eu escrevi uma fábrica personalizada que simplesmente ignorava o http por completo (só ouvia em https) - o que se encaixa perfeitamente com os requisitos do TransportWithMessageCredential, então eu não estava incomodado com isso.

Gostaria de saber se você não obteria mais alegria hospedando em uma porta padrão, mas como um site diferente (IP/host-header/etc).

0
adicionado