Obtenir le nom d'hôte de l'appelant dans WCF
-
05-09-2019 - |
Question
Je remplace un service Web existant avec un service WCF et comme la première étape de la migration, je vais exposer un point final avec BasicHttpBinding jusqu'à ce que le client est mis à jour plus tard dans l'année.
Le plan est d'accueillir le nouveau service WCF avec un service de fenêtres (le service ne sera appelé à partir de l'intranet donc il n'y a pas de réel besoin HTTP), mais l'exposition HTTP de base et paramètres Net.TCP de sorte que la migration peut se produire par étapes.
Cependant, je vais avoir dans mon service WCF une difficulté à obtenir le nom d'hôte de l'appelant, en regardant le code de service Web actuel qu'il utilise Context.Request.UserHostName pour obtenir le nom d'hôte. J'ai réussi à obtenir le nom d'utilisateur de l'appelant et l'adresse IP, mais toutes les autorisations connexes / services de sécurité dans l'environnement utilise le nom d'hôte par opposition à la propriété intellectuelle, donc est-il un moyen pour moi d'obtenir le HostName dans mon service?
P.S. J'ai mis en mode sécurité TransportCredentialOnly avec clientCredientialType défini sur Windows
La solution
Puisque vous n'êtes pas hébergez dans IIS, vous ne pouvez pas utiliser ASP. mode de compatibilité NET pour accéder aux HttpContext
qui serait normalement présent dans un processus d'ASP.NET.
, vous pouvez utiliser le GetHostEntry
méthode sur la classe Dns
dans espace de noms System.Net
pour obtenir le instance de IPHostEntry
qui contiendra les alias (nom DNS) pour les adresses IP que vous obtenez.