DotNet Core HTTP-запрос набора исходных IP-адресов - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть приложение dotnet core 2.1, которое должно отправлять веб-запросы с использованием нескольких исходных IP-адресов.

Я очень много гуглил и пытался найти обходной путь. Наиболее популярным является

Можно ли отправить веб-запрос с указанного IP-адреса с помощью .NET Framework?

но оно не работает для ядра dotnet, и BindIPEndPointCallback никогда не вызывается.

Я также нашел класс CurlHandler, который включает функциональность curl

https://github.com/dotnet/corefx/blob/e0ba7aa8026280ee3571179cc06431baf1dfaaac/src/System.Net.Http/src/System/Net/Http/CurlHandler/CurlHandler.cs

и сам curl имеет опцию --interface для установки исходного IP-адреса, но класс CurlHandler не имеет открытых методов для установки CurlOptions.

Так что единственный способ исправить это, используя необработанные сокеты, но мне это не нравится.

Существуют ли простые решения для настройки IP-адреса источника веб-запроса?

Заранее спасибо

1 Ответ

0 голосов
/ 11 сентября 2018

Похоже, что самый простой способ исправить проблему - просто использовать curl в качестве внешней команды

 var command =string.Format("curl --interface {0} {yourCommandHere}", localIpString);

 Process proc = new Process();
 proc.StartInfo.FileName = "/bin/bash";
 proc.StartInfo.Arguments = "-c \" " + command + " \"";
 proc.StartInfo.UseShellExecute = false;
 proc.StartInfo.RedirectStandardOutput = true;
 proc.Start();
 var result = proc.StandardOutput.ReadToEnd();
 Console.Writeline("curl result {0}", result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...