选择WebClient传出IP

时间:2015-03-02 11:53:12

标签: c# .net webclient

我的.net应用使用WebClient访问互联网上的文件,而我的机器有多个IP地址。在发出出站请求时,有没有办法以编程方式选择使用哪个IP而不是第一个IP? (不一定是WebClient)

1 个答案:

答案 0 :(得分:1)

实现此目的的一种可能性是使用ServicePoint.BindIPEndPointDelegate事件并指定要使用的IP地址。

示例:

var uri = new Uri("YOUR URI");
var servicePoint = ServicePointManager.FindServicePoint(uri);
servicePoint.BindIPEndPointDelegate = (sp, remoteEndPoint, retryCount) =>
{
    var address = IPAddress.Parse("PUT YOUR DESIRED IP HERE");
    return new IPEndPoint(address, 0);
};

现在尝试向相应的URL发出HTTP请求。

或者,如果您使用的是HttpWebrequest,则可以根据请求为每个代理分配此内容:

var request = (HttpWebRequest)WebRequest.Create("YOUR URI");
request.ServicePoint.BindIPEndPointDelegate = (sp, remoteEndPoint, retryCount) =>
{
    var address = IPAddress.Parse("PUT YOUR DESIRED IP HERE");
    return new IPEndPoint(address, 0);
};

using (var response = request.GetResponse())
{
   ...
}