Su una macchina con più schede di rete, è necessario associare un servizio Web WCF a un'interfaccia di rete specifica. Sembra che l'impostazione predefinita sia il binding su tutte le interfacce di rete.Associare il servizio Web WCF all'interfaccia di rete specifica/IP
La macchina dispone di due adattatori di rete con IP 192.168.0.10
e 192.168.0.11
. Ho un Apache in esecuzione che si lega a 192.168.0.
10
:80
e la necessità di eseguire il webservice sulla 192.168.0.
11
:80
. (A causa di circostanze esterne non posso scegliere un'altra porta.)
ho provato la seguente:
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);
Ma non funziona; netstat -ano -p tcp
mostra sempre il servizio web in ascolto su 0.0.0.0:80
, che è tutte le interfacce (se ho capito bene). Quando avvio Apache per primo, si associa correttamente all'interfaccia, che a sua volta impedisce al servizio WCF di collegarsi a "tutti".
Qualche idea?
Questo sembra un passo nella giusta direzione! È in * TransportBinding. Impostarlo su Exact lo rende associato all'IP dato (cosa che non ha fatto prima), ma sfortunatamente non impedisce che si leghi anche su 0.0.0.0. (Per me sembra comunque un altro errore.) Sono curioso di sapere se fa il trucco per te! – sunside
Strano, quindi ora lo vedi legato sia agli IP specifici che a quelli generali ...? Abbiamo sia Server 2003 che 2008 e avrò il mio sysadmin per provarlo su entrambi, quindi vedremo se riusciremo a risolverlo. Vogliono VERAMENTE usare il binding IP piuttosto che il binding delle porte, e non posso biasimarli. –
Infatti. Potrebbe essere che si lega solo a "qualsiasi" perché può, non averlo ancora controllato. – sunside