Получение IP-адреса сервера в WCF? - PullRequest
3 голосов
/ 09 марта 2010

Как я могу получить адрес сервера , который использовался для запроса, когда у него несколько IP-адресов?

* 1005 Е.Г. *

  • сервер имеет адреса 10.0.0.1 и 10.0.0.2.
  • при обработке запроса серверная служба должна знать, использовался ли клиент для подключения к нему 10.0.0.1 или 10.0.0.2.

Пока я обнаружил, что

  • OperationContext.Current.EndpointDispatcher.EndpointAddress и OperationContext.Current.Channel.LocalAddress содержат адрес из .config (например, localhost)

  • OperationContext.Current.IncomingMessageProperties.Via содержит URL-адрес, который клиент использовал для подключения к серверу (но это может быть просто имя из файла hosts-клиента).

РЕДАКТИРОВАТЬ: все еще в поисках решения ...

1 Ответ

0 голосов
/ 09 марта 2010

Без какой-либо дополнительной помощи и работы с вашей стороны, я не думаю, что вы можете получить это.

Клиент отправляет сообщение на URL - сообщение сериализуется, отправляется, обрабатывается и отправляется обратно. Не существует «постоянного соединения», которое вы могли бы запросить, и сервер ничего не скажет.

Что вы можете сделать, это создать расширение Message Inspector, которое может быть зарегистрировано на стороне сервера и которое записывает локальный IP-адрес сервера в поле заголовка, которое затем можно проверить на стороне клиента.

Google или Bing для "инспекторов сообщений WCF", и вы должны найти немало хитов - некоторые из лучших:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...