На машине с несколькими сетевыми картами мне нужно привязать веб-сервис 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 к «всем».
Есть идеи?