2011-12-21 12 views

risposta

0

In WCF durante la creazione di ChannelFactory è possibile specificare l'endpoint (o l'indirizzo IP a cui si desidera connettersi).

Dim factory As ChannelFactory(Of IChatServiceChannel) 
factory = New DuplexChannelFactory(Of IChatServiceChannel)(callbackObject, binding, endpoint) 
Dim Channel = factory.CreateChannel() 

È possibile connettersi a tutti i diversi IP desiderati in questo modo, specificando diversi endpoint.

+0

non il punto finale ma il punto di partenza per l'inizializzazione della richiesta SOAP. @RyanFishman –

+1

Inoltre, dice che sta usando un riferimento web, quindi non può usare la tua tecnica. –

2

Non l'ho mai fatto. Sembra complicato

Innanzitutto, leggere Ways to Customize your ASMX Client Proxy per apprendere la tecnica di base di ignorare l'oggetto GetWebRequest della classe proxy.

È necessario eseguire l'override di GetWebRequest in modo da poter utilizzare lo ServicePoint per effettuare la richiesta. Imposterai la proprietà BindIPEndPoint a un delegato che punta a un tuo metodo che restituirà l'indirizzo IP corretto.

public partial class Service1 
{ 
    protected override WebRequest GetWebRequest(Uri uri) 
    { 
     HttpWebRequest request = (HttpWebRequest) base.GetWebRequest(uri); 
     request.ServicePoint.BindIPEndPointDelegate = ReturnSpecificIPAddress; 
     return request; 
    } 

    private IPEndPoint BindIPEndPoint(
     ServicePoint servicePoint, 
     IPEndPoint remoteEndPoint, 
     int retryCount) 
    { 
     return new IPEndPoint(IPAddress.Parse("10.0.0.1"), 80); 
    } 
} 
Problemi correlati