Перехват вызовов WCF на уровне TCP - PullRequest
0 голосов
/ 08 мая 2018

В настоящее время у меня есть программа с графическим интерфейсом, которая подключается к приложению на стороне сервера с помощью WCF и привязки net.tcp. Интерфейс, используемый для подключения, имеет значение CallbackContract.

Мы планируем переместить процессы на стороне сервера в новый центр обработки данных, который не будет доступен со стороны клиента, поэтому вызовы WCF больше не будут работать. Однако наши существующие серверы могут подключаться к центру обработки данных, поэтому в настоящее время мы запускаем графический интерфейс на этих серверах и удаленный рабочий стол на сервере.

Однако эта практика не масштабируема, поэтому я написал «посредника посредника», который работает на сервере и прослушивает TCP-соединения. Наши клиентские приложения подключаются к этому, и он устанавливает соединение с сервером WCF в центре обработки данных. Все, что отправлено на прокси-сервер, перенаправляется в приложение сервера WCF, а все, что считывается из приложения сервера WCF, отправляется в приложение GUI. Для всех наших приложений, не относящихся к WCF, это работает без проблем, но отказывается работать для любого приложения WCF. Я получаю соединение, и происходит краткий обмен данными, но затем все останавливается.

Похоже, что слой net.tcp обнаружил, что в центре человек, и решил прекратить отправку / получение данных. Я не использую и безопасность (привязка использует SecurityMode.None). Я также пытался использовать функцию portproxy в приложении командной строки netsh, но у меня возникла та же проблема - все приложения, не относящиеся к WCF, работают, а приложения WCF - нет!

Я ценю, что это довольно нишевая вещь, но мне было интересно, есть ли у кого-нибудь понимание, почему я не могу перехватить трафик WCF?

...