Привязать веб-сервис WCF к определенному сетевому интерфейсу / IP - PullRequest
8 голосов
/ 12 мая 2010

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

Устройство имеет два сетевых адаптера с IP-адресами 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 к «всем».

Есть идеи?

1 Ответ

2 голосов
/ 29 мая 2010

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

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

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