Свяжите веб-сервис WCF с определенным сетевым интерфейсом / IP

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

Машина имеет два сетевых адаптера с дюйм/с 192.168.0.10 и 192.168.0.11. У меня есть Apache, работающий, который привязывает 192.168.0.10:80 и должен работать на веб-сервисе 192.168.0.11:80. (Из-за внешних обстоятельств я не могу выбрать другой порт.)

Я попробовал следующее:

string endpoint = "http://192.168.0.11:80/SOAP";
ServiceHost = new ServiceHost(typeof(TService), new Uri(endpoint));
ServiceHost.AddServiceEndpoint(typeof(TContract), Binding, "");
// or: ServiceHost.AddServiceEndpoint(typeof(TContract), Binding, endpoint);

Но это не работает; netstat -ano -p tcp всегда показывает веб-сервис, слушающий на 0.0.0.0:80, который является всеми интерфейсами (если я добрался, это исправляет). Когда я запускаю Apache сначала, он правильно связывает с другим интерфейсом, который в свою очередь предотвращает сервис WCF для привязки со "всеми".

Какие-либо идеи?

8
задан sunside 12 May 2010 в 16:13
поделиться

1 ответ

У нас на работе похожая проблема, и я занимался ее изучением, когда наткнулся на ваш пост. У меня еще не было возможности попробовать, но я планирую это сделать, когда у нас появится шанс: в Binding есть "hostNameComparisonMode", который, если установлен на "Exact", должен всегда подчиняться вашим настройкам. (По умолчанию он может перейти к подстановочному символу, если совпадение не найдено.)

Если у вас будет возможность попробовать это раньше меня, пожалуйста, сообщите мне о результатах. В противном случае я обновлю свой ответ и дам вам знать!

2
ответ дан 6 December 2019 в 01:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: