Получение имени хоста вызывающего абонента в WCF
-
05-09-2019 - |
Вопрос
Я заменяю существующую веб-службу службой WCF, и в качестве первого шага миграции я собираюсь предоставить конечную точку с помощью BasicHttpBinding, пока клиент не будет обновлен позже в этом году.
План состоит в том, чтобы разместить новую службу WCF с помощью службы Windows (служба будет вызываться только из интрасети, поэтому нет реальной необходимости в HTTP), но предоставить доступ как к базовому HTTP, так и к Net.Конечные точки TCP, чтобы миграция могла происходить поэтапно.
Однако у меня возникли некоторые проблемы с получением имени хоста вызывающего абонента в моей службе WCF, просматривая текущий код веб-службы, который он использует Context.Request.UserHostName для получения имени хоста.Мне удалось получить имя пользователя и IP-адрес вызывающего абонента, но все связанные службы разрешений / безопасности в среде используют имя хоста в отличие от IP, так есть ли у меня какой-либо способ получить имя хоста внутри моей службы?
P.S.Я установил режим безопасности в TransportCredentialOnly с clientCredientialType, установленным в Windows
Решение
Поскольку вы не размещаете в IIS, вы не можете использовать ASP.NET режим совместимости чтобы получить доступ к HttpContext
который обычно присутствовал бы в процессе ASP.NET .
Вместо этого вы можете использовать GetHostEntry
способ на Dns
класс в System.Net
пространство имен чтобы получить IPHostEntry
экземпляр который будет содержать псевдонимы (DNS-имена) для IP-адресов, которые вы получаете.