Подтвердить что ты не робот

Как получить IP-адрес удаленной конечной точки WCF?

Есть ли способ получить удаленный IP-адрес соединения WCF?

Я думаю, причина, по которой он не встроен в среду WCF, заключается в том, что WCF может работать с привязками не к TCP/IP, поэтому IP-адрес не всегда имеет смысл.

Однако информация будет иметь смысл для всех широко используемых привязок (насколько я знаю: BasicHttp, DualHttp, WSHttp и NetTcp).

IP-адрес, вероятно, доступен с использованием отражения, но я бы скорее нашел документальный способ его получить, а не взломать классы фреймворка.

Я искал эту проблему, и кажется, что многие люди столкнулись с ней, не найдя достойного решения (обычный ответ полагаться в заголовках сообщений, но это подразумевает доверие клиенту предоставить его реальный IP-адрес, который не является вариантом, если вы хотите зарегистрировать IP-адрес по соображениям безопасности)

4b9b3361

Ответ 2

OperationContext context = OperationContext.Current;
MessageProperties properties = context.IncomingMessageProperties;
RemoteEndpointMessageProperty endpoint = properties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
string address = endpoint.Address;

Ответ 3

если вы находитесь на стороне службы и хотите получить IP-адрес клиента, вам необходимо проверить свойства MessageContext Message. посмотрите здесь или h ere например