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

Foi útil?

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.

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