Получение IP-адреса обратного канала в WCF - PullRequest
4 голосов
/ 07 июня 2011

У меня есть служба WCF на дуплексном канале с контрактом на обратный вызов.Служба отслеживает клиентов, сохраняя результат OperationContext.Current.GetCallbackChannel<T>() в списке, когда клиент вызывает метод SubscribeMe() в службе.Служба будет периодически пинговать эти каналы обратного вызова, чтобы отслеживать их действительность, и истечет срок действия тех из них, которые закрыты или имеют тайм-аут.

У меня такой вопрос: как получить информацию об удаленном хосте, когда удаленныйхост не выполняет активный запрос к моему сервису, например, когда я звоню MyCallbackContract.Ping()?

Я попытался привести объект канала обратного вызова к IContextChannel и получить доступ к свойству IContextChannel::RemoteAddress, но этоСвойство содержит некоторый URI пространства имен, который не имеет ничего общего с реальным удаленным хостом в канале обратного вызова.

1 Ответ

5 голосов
/ 07 июня 2011

Не проверено (потребуется некоторое время для настройки всех настроек!), Но я думаю, что вы ищете что-то вроде этого:

OperationContext context = OperationContext.Current;
MessageProperties messageProperties = context.IncomingMessageProperties;
RemoteEndpointMessageProperty endpointProperty =
                messageProperties[RemoteEndpointMessageProperty.Name]
                as RemoteEndpointMessageProperty;

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