(.NET) ServicePoint.IPEndPointDelegate не перезванивает с прокси - PullRequest
1 голос
/ 05 марта 2010

Мне нужно привязать локальный IP-адрес для запроса HttpWebRequest (на компьютере установлено несколько IP-адресов).Я создаю метод делегата, и он вызывается, и ip связывается для запросов без прокси, но как только я добавляю детали прокси в запрос, обратный вызов никогда не происходитHttpWebRequests, которые используют прокси?

    static void MakeRequest(string url, WebProxy myProxy)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.ServicePoint.BindIPEndPointDelegate = new BindIPEndPoint(BindIPEndPointCallback);
        request.Proxy = myProxy;
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    }
    public static IPEndPoint BindIPEndPointCallback(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount)
    {
        // not called when proxy is set
        Console.WriteLine("BindIPEndpoint called");
        return new IPEndPoint(IPAddress.Parse("192.168.1.58"), 5000);
    } 

Есть ли другой способ связать это для https?

1 Ответ

3 голосов
/ 10 марта 2010

Для привязки запроса, использующего прокси, используйте ServicePointManager.FindServicePoint;

static void MakeRequest(string url, WebProxy myProxy)
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.Proxy = myProxy;
    ServicePoint sp = ServicePointManager.FindServicePoint(new Uri(url), myProxy);
    sp.BindIpEndPointDelegate = new BindIpEndPoint(BindIpEndPointCallback);
    HttpWebResponse = (HttpWebResponse)request.GetResponse();
}

Работает для http-запросов, к сожалению, делегат по-прежнему не вызывается при запросах https.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...