Отправить SOAP-запрос с определенного IP-адреса - PullRequest
5 голосов
/ 21 декабря 2011

У меня есть система с несколькими IP-адресами. Но я могу инициировать SOAP-запрос только с одного IP-адреса. Как мне получить это в VB.NET.

Ответы [ 2 ]

2 голосов
/ 28 декабря 2011

Я никогда этого не делал.Это выглядит сложно.

Во-первых, прочитайте Способы настройки клиентского прокси ASMX , чтобы изучить базовую технику переопределения GetWebRequest объекта вашего прокси-класса.

Youпотребуется переопределить GetWebRequest, чтобы вы могли получить ServicePoint, используемый для выполнения запроса.Вы установите свойство BindIPEndPoint для делегата, указывающего на ваш метод, который будет возвращать правильный 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);
    }
}
0 голосов
/ 27 декабря 2011

В WCF при создании ChannelFactory вы можете указать конечную точку (или IP-адрес, к которому вы хотите подключиться).

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

Вы можете подключиться к любому количеству IP-адресов, указав разные конечные точки.

...