选择 WebClient 传出 IP
Choose WebClient outgoing IP
我的 .net 应用程序使用 WebClient 访问互联网上的文件,我的机器有多个 IP 地址。有没有办法以编程方式 select 在发出出站请求时使用哪个 IP 而不是第一个 IP? (不必是 WebClient)
实现此目的的一种可能性是使用 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())
{
...
}
我的 .net 应用程序使用 WebClient 访问互联网上的文件,我的机器有多个 IP 地址。有没有办法以编程方式 select 在发出出站请求时使用哪个 IP 而不是第一个 IP? (不必是 WebClient)
实现此目的的一种可能性是使用 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())
{
...
}