Pergunta

Update 3:
Eu criei um projeto de teste Visual Studio 2008 e tentou criar uma referência de serviço para o site compartilhado referência de serviço WCF e recebeu o seguinte erro:

Houve um download de erro ' http: //apps.mydomain/MyService.svc '. A solicitação falhou com status HTTP 400: Bad Request. Metadados contém uma de referência que não podem ser resolvidos: ' http: //apps.mydomain/MyService.svc '. aplicação tipo de conteúdo / soap + xml; charset = UTF-8 não foi apoiado por serviço http: //apps.mydomain/MyService.svc '. O cliente eo serviço ligações pode ser incompatíveis. O servidor remoto retornou um erro: (415) Não é possível processar o mensagem, porque o tipo de conteúdo 'Aplicação / sabão + XML; charset = UTF-8? não foi o esperado tipo 'text / xml; charset = utf-8' .. Se o serviço é definido na solução atual, tente construção da solução e adicionando o referência de serviço novamente.

UPDATE 2:
@ Nick - Eu tentei a sua sugestão de definir explicitamente o endereço de cada endpoint com o caminho completo de cada servidor e eu ainda obter o mesmo resultado

.

Além disso, quando eu tentar definir o atributo listenUri com a URL do site compartilhado, fico com um mau erro de solicitação 400 em vez de um erro 404.

Atualizar
Depois de alguma pesquisa adicional, houve alguns conflitos de definições de configuração do IIS entre http: //apps1.mydomain e http: //apps2.mydomain e foi capaz de superar o "erro Application Server não está disponível".

Agora eu estou recebendo um erro 404 quando eu tentava navegar para o site compartilhado ( http: //apps.mydomain ), mas eu sou capaz de navegar para a http: //apps1.mydomain e http:. //apps2.mydomain referência de serviço

Problema Original

As minhas companys usos Microsoft NLB para o tráfego de balanceamento de carga entre o nosso servidores IIS. Eu recentemente implantado um serviço WCF para cada IIS 6 do Windows Server 2003 servidores Standard Edition SP1. Recebi o seguinte erro quando eu tentei para procurar o nome de domínio compartilhado usando o IE 7:

Application Server Indisponível A aplicação web que você está tentando acesso neste servidor web está atualmente indisponível. Por favor, bateu o "Atualizar" botão no seu navegador web para repetir seu pedido.

Administrador Nota: Uma mensagem de erro detalhando a causa dessa específica falha de solicitação pode ser encontrada no log de eventos do aplicativo da web servidor. Examine essa entrada de log para descobrir o que causou este erro ocorrer.

O consumidor irá apontar para o http: //apps.mydomain para usar o serviço, mas domínio virtual é mapeado para http: //apps1.mydomain ou http: //apps2.mydomain . Se eu vá para o serviço em cada servidor, eu não receber esse erro.

O serviço está atualmente usando um anônimo basicHttpBinding.

Tem mais alguém experimentou este problema?

Histórico

Antes de esse erro começou a ocorrer, recebi o seguinte erro quando eu broswed a todos nome de três domínio ( http: //apps.mydomain , http: //apps1.mydomain , http: //apps2.mydomain ):

Esta coleção já contém um endereço com http regime. Não pode ser, no máximo, um endereço por regime em esta coleção.

Eu usei a classe ServiceHostFactory personalizar meu arquivo .svc para especificar uma fábrica de serviço personalizado. Então eu criar nossa fábrica personalizado por herança de ServiceHostFactory e substituindo-os conforme necessário.

public class MyFactory : ServiceHostFactory
{
    protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
    {
        return new ServiceHost(serviceType, baseAddresses[0]);
    }
}

<%@ ServiceHost Language="C#" Factory="MyFactory" Debug="true" Service="MyService" CodeBehind="~/App_Code/MyService.cs" %>
Foi útil?

Solução

Depois de algumas experiências com diferentes configurações para o meu serviço WCF e consumindo aplicação. Eu criei uma referência de serviço para uma das referências de serviços de trabalho ( http: //apps1.mydomain ou http: //apps2.mydomain ) no aplicativo de consumo. Então eu mudei a referência ponto final na configuração do cliente para apontar para o site compartilhado endereço WCF ( http: //apps.mydomain ) e eu era capaz de consumir e usar o serviço.

Outras dicas

Eu tive um problema antes com WCF e balanceamento de carga, onde os servidores tinha várias placas de rede com diferentes endereços IP e WCF seria apenas pic o primeiro endereço IP que encontrou. Tivemos que definir explicitamente o endereço IP na definição de serviço de cada servidor para WCF ligaria para o caminho certo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top