2011-12-21 17 views

Odpowiedz

0

W WCF podczas tworzenia swojego ChannelFactory możesz określić swój punkt końcowy (lub adres IP, z którym chcesz się połączyć).

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

Możesz podłączyć się do tylu różnych adresów IP, ile chcesz, określając różne punkty końcowe.

+0

nie jest to punkt końcowy, ale punkt początkowy dla inicjowania żądania SOAP. @RyanFishman –

+1

Poza tym mówi, że używa odwołania do strony internetowej, więc nie może użyć twojej techniki. –

2

Nigdy tego nie robiłem. Wygląda to skomplikowanie.

Najpierw przeczytaj Ways to Customize your ASMX Client Proxy, aby poznać podstawową technikę przesłonięcia obiektu GetWebRequest swojej klasy proxy.

Będziesz musiał zastąpić GetWebRequest, abyś mógł pobrać ServicePoint używany do wykonania żądania. Ustawisz właściwość BindIPEndPoint na delegata wskazującego na twoją metodę, która zwróci poprawny adres IP.

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); 
    } 
} 
Powiązane problemy