2010-05-12 16 views
8

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?

risposta

2

Abbiamo un problema simile sul mio posto di lavoro, e stavo facendo ricerche per questo quando sono incappato nel tuo post. Non ho ancora avuto la possibilità di provarlo, ma pianifico quando ne avremo la possibilità: c'è un "hostNameComparisonMode" nel Binding che, se impostato su "Exact", dovrebbe obbedire sempre alle tue impostazioni. (L'impostazione predefinita consente di andare a un carattere jolly se non è possibile trovare una corrispondenza.)

Se si ha la possibilità di provare questo prima di me, per favore fammi sapere i risultati. Altrimenti aggiornerò la mia risposta e ti farò sapere!

+0

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

+0

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. –

+0

Infatti. Potrebbe essere che si lega solo a "qualsiasi" perché può, non averlo ancora controllato. – sunside

Problemi correlati