2013-04-24 3 views
1

Я в настоящее время службы удаленного взаимодействия .NET, которые могут быть доступны разными способами:. Удаленный доступ к сети. Знаете ли вы в службе, если звонок был сделан локально или удаленно?

  • на местном уровне через канал IPC
  • Дистанционно через канал TCP
  • Локальное через TCP канал

Мне нужно узнать в одном из моих методов обслуживания, если вызов был сделан локально или удаленно (в зависимости от лицензии я должен удаленно отправлять небольшие данные).

Я не могу найти способ найти это.

У меня уже есть пользовательский IServerChannelSink, я думал, что я могу определить, какой тип канала используется для этого вызова, и если это TCP один, проверьте его IP, но я не могу найти его.

У вас есть вопросы по тому, как проверить, есть ли у нас локальный звонок или нет?

Спасибо за помощь

ответ

1

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

+0

Да, но в случае локального канала IPC, как узнать, что мы имеем дело с каналом IPC? – J4N

+0

@ J4N Если используется канал IPC, то 'CallContext.GetData (" ClientIPAddress ")' возвращает null. –

+0

Да, правильно (на самом деле это 'requestHeaders [CommonTransportKeys.IPAddress]', который является нулевым, но я вижу, что я могу это сделать, спасибо! – J4N