Согласно это , нет.Возможно, вам придется перейти к использованию сокетов, где я знаю, что вы можете выбрать локальный IP-адрес.
РЕДАКТИРОВАТЬ: на самом деле, кажется, что это возможно.HttpWebRequest имеет свойство ServicePoint, которое, в свою очередь, имеет BindIPEndPointDelegate , что может быть тем, что вы ищете.
Дайте мне минуту, я собираюсь привести пример ....
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://stackoverflow.com");
req.ServicePoint.BindIPEndPointDelegate = delegate(
ServicePoint servicePoint,
IPEndPoint remoteEndPoint,
int retryCount) {
if (remoteEndPoint.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6) {
return new IPEndPoint(IPAddress.IPv6Any, 0);
} else {
return new IPEndPoint(IPAddress.Any, 0);
}
};
Console.WriteLine(req.GetResponse().ResponseUri);
По сути, делегат должен вернуть IPEndPoint.Вы можете выбрать все, что захотите, но если он не может привязаться к нему, он снова вызовет делегата, вплоть до int.MAX_VALUE раз.Вот почему я включил код для обработки IPv6, поскольку IPAddress.Any - это IPv4.
Если вас не интересует IPv6, вы можете избавиться от этого.Кроме того, я оставляю читателю фактический выбор IP-адреса в качестве упражнения:)