Получение имени хоста вызывающего абонента в WCF

StackOverflow https://stackoverflow.com/questions/566011

  •  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-адресов, которые вы получаете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top