Obtener el nombre de host de la persona que llama en WCF
-
05-09-2019 - |
Pregunta
Estoy sustitución de un servicio web existente con un servicio WCF y como el primer paso de la migración Voy a exponer un punto final con BasicHttpBinding hasta que el cliente se actualiza más tarde en el año.
El plan es para acoger el nuevo servicio WCF con un servicio de Windows (el servicio sólo se puede llamar desde la intranet así que no hay necesidad real de HTTP), pero la exposición de HTTP básico y los puntos finales net.tcp por lo que la migración puede ocurrir en etapas.
Sin embargo, estoy teniendo algunos problemas para conseguir el nombre de host de la persona que llama en mi servicio WCF, mirando el código de servicio web actual que está usando Context.Request.UserHostName para obtener el nombre de host. Me las he arreglado para obtener nombre de usuario o IP de la persona que llama, pero todos los servicios de autorización / relacionados con la seguridad en el entorno utiliza el nombre de host en lugar de IP, por lo que ¿hay alguna manera para que consiga el NombreHost dentro de mi servicio?
P.S. He puesto el modo de seguridad a TransportCredentialOnly con clientCredientialType establecido en Windows
Solución
Dado que no se aloja en IIS, no se puede utilizar ASP. NET modo de compatibilidad para obtener acceso a la HttpContext
que normalmente estará presente en una proceso ASP.NET.
En su lugar, puede utilizar la GetHostEntry
método en la clase Dns
en el System.Net
espacio de nombres para obtener el ejemplo IPHostEntry
el cual contendrá los alias (nombres DNS) para las direcciones IP que está obteniendo.