Жесткий код IPEndpoint дает исключение, используя ServicePoint.BindIPEndPointDelegate в ASP.Net - PullRequest
0 голосов
/ 15 февраля 2012

Я пытаюсь привязать свой исходящий IP для моего веб-запроса

HttpWebRequest reqhttp = (HttpWebRequest)req;
reqhttp.ServicePoint.BindIPEndPointDelegate = new System.Net.BindIPEndPoint(BindIPEndPointCallback);
reqhttp.Credentials = null;
reqhttp.AuthenticationLevel = AuthenticationLevel.None;
reqhttp.Method = "POST";
reqhttp.ContentLength = send.Length;
reqhttp.ContentType = "text/xml";

Stream dataStream = reqhttp.GetRequestStream();
dataStream.Write(send, 0, send.Length);
dataStream.Close();

 public delegate IPEndPoint BindIPEndPoint(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount);

    private IPEndPoint BindIPEndPointCallback(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount)
    {
        return new IPEndPoint(IPAddress.Parse("111.111.11.11"), 0); //bind to a specific ip address on your server
    }

по какой-то причине, когда я это делаю, выдает ошибку

если не удается выполнить эту строку

Stream dataStream = reqhttp.GetRequestStream();

Существующее соединение было принудительно закрыто удаленным хостом

Я не понимаю, что здесь не так.

Может ли кто-нибудь помочь понять, что не так в этом коде, и исправить проблему.

Ответы [ 2 ]

1 голос
/ 04 сентября 2013

Метод GetRequestStream () сначала вызовет BindIPEndPointDelegat, затем попытается подключиться к удаленному серверу. Если вы привязываетесь к локальной конечной точке, которая не существует, или удаленный сервер недоступен, вы получите исключение.

0 голосов
/ 15 февраля 2012

попробуйте что-то вроде этого

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myIP);
request.Proxy = myProxy;
ServicePoint sp = ServicePointManager.FindServicePoint(new Uri(myIP), myProxy);
sp.BindIpEndPointDelegate = new BindIpEndPoint(BindIpEndPointCallback);
HttpWebResponse = (HttpWebResponse)request.GetResponse();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...