На компьютере есть два активных сетевых устройства:
Одно через встроенную сетевую карту по проводу, второе - USB WiFi.
Для работы с сетью по умолчанию используется встроенная сетевая карта.
Но для части запросов из .net приложения хочу использовать wifi сеть.
Как это можно сделать?
Пробовал искать адрес сетевого интерфейса так:
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in adapters)
{
if (adapter.Description.Contains("TP-LINK"))//TP-LINK
{
IPInterfaceProperties properties = adapter.GetIPProperties();
foreach (var address in properties.UnicastAddresses)
{
if (address.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
Log.Info($"Use interface {adapter.Name}. IP: {address.Address}");
_useIp = true;
_address = address.Address;
break;
}
}
}
if (_useIp) break;
}
И затем при создании запроса делать его явную вставку
private static IPEndPoint BindIP(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount)
{
if (retryCount > 3) return null;
return new IPEndPoint(_address, 0);
}
var request = WebRequest.CreateHttp(url);
if (_useIp)
{
request.ServicePoint.BindIPEndPointDelegate = BindIP;
}
Но такой подход не работает. Причем если пробую поставить адрес проводной сети, то вообще уходит в бесконечный цикл если не сделать как в примере выход при превышении количества попыток.
Запросы делаю по https. Может есть еще варианты?
PS: операционная система Windows 10