Obtendo o hostname do chamador no WCF
-
05-09-2019 - |
Pergunta
Eu estou substituindo um serviço web existente com um serviço WCF e como a primeira etapa da migração vou expor um ponto de extremidade com BasicHttpBinding até que o cliente é atualizado mais tarde no ano.
O plano é para hospedar o novo serviço WCF com um serviço do Windows (o serviço só será chamado de dentro da intranet por isso não há necessidade real de HTTP), mas expondo tanto Básica HTTP e endpoints net.tcp para que a migração pode acontecer em etapas.
No entanto, eu estou tendo alguns problemas para obter o hostname do chamador no meu serviço WCF, olhando para o código de serviço da web atual ele está usando Context.Request.UserHostName para obter o nome do host. Eu consegui obter nome de usuário e endereço IP do autor da chamada, mas todos os serviços de permissão / segurança relacionados no ambiente usa o nome do host ao invés de IP, então há alguma maneira para mim para obter o HostName dentro do meu serviço?
P.S. Eu definir o modo de segurança para TransportCredentialOnly com o conjunto clientCredientialType para o Windows
Solução
Desde que você não está hospedando no IIS, você não pode usar ASP. NET modo de compatibilidade para ter acesso ao HttpContext
que seria normalmente presente em um processo ASP.NET.
Em vez disso, você pode usar o GetHostEntry
método na Dns
classe na System.Net
namespace para obter o IPHostEntry
exemplo que conterá os aliases (nomes DNS) para os endereços IP que você está obtendo.