Como você configurar um serviço WCF para clientes rodando em máquinas em rede?
-
03-07-2019 - |
Pergunta
Acabei de criar um serviço WCF / cliente e tudo funciona bem quando rodando na mesma máquina. Mas não consigo descobrir como configurá-lo para rodar em máquinas diferentes. Você sabe como?
Neste momento, o URI está definido para http: // localhost: 8000 ......
Mas eu acho que eu quero algo como net.tcp: // MyServer: 8000 ... ..
Todas as idéias seria ótimo. Obrigado.
Solução
Pelo que parece, você tem tanto o serviço eo cliente no mesmo executável. Embora isso possa ser feito, quando você quer que eles em máquinas separadas você precisa ter um executável / host para o serviço (ou auto hospedado, ou no IIS) e um executável para o cliente. Cada terá de ser devidamente configurado com o endereço, de ligação, e se contraem na secção de configuração apropriada para ela. Então, no servidor, você teria algo parecido com isto:
<configuration>
<system.serviceModel>
<services>
<service name="YourService">
<endpoint address="http://MyServer:8000/..."
binding="BasicHttpBinding"
contract="Your.IContract" />
</service>
</services>
</system.serviceModel>
</configuration>
E no cliente você teria o seguinte:
<configuration>
<system.serviceModel>
<client>
<endpoint address="http://MyServer:8000/..."
binding="BasicHttpBinding"
contract="Your.IContract"
name="ClientEndpoint" />
</client>
</system.serviceModel>
</configuration>
O principal é ter certeza de que o cliente eo servidor podem se comunicar uns com os outros sobre o porto especificado e protocolo (fazer principalmente a comunicação certeza que um firewall não está bloqueando). A outra coisa a ter em conta é mudar o seu protocolo de ligação pode afetar outros aspectos do seu serviço (de segurança é um grande problema, mas também o que você pode e não pode fazer com o serviço).
Outras dicas
Não há informação suficiente aqui para responder a sua pergunta.
Assumindo que você não está definindo endereço / informações vinculativas / contrato na ServiceHost e proxies através de código, você precisa postar a seção de seu arquivo de configuração.
Se você está fazendo isso no código, então você precisa mostrar o código que você está usando.
De que eu posso dizer, parece que você pode ter uma incompatibilidade com a ligação dos transportes. O serviço eo cliente tem que estar no mesmo transporte (HTTP, TCP, pipes nomeados, etc, etc).