首页 > 解决方案 > dotnet core http请求集源ip

问题描述

我有 dotnet core 2.1 应用程序,它必须使用多个源 IP 地址发送 Web 请求。

我用谷歌搜索了很多,并尝试找到解决方法。最受欢迎的是

我可以使用 .NET Framework 从指定的 IP 地址发送 Web 请求吗?

但它不适用于 dotnet 核心,并且永远不会调用 BindIPEndPointCallback。

我还发现了包含 curl 功能的 CurlHandler 类

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

并且 curl 本身具有用于设置源 IP 的 --interface 选项,但 CurlHandler 类没有任何公共方法来设置 CurlOptions。

所以我可以解决这个问题的唯一方法是使用原始套接字,但我不喜欢它。

有没有设置web请求源ip的简单解决方案?

先感谢您

标签: c#linuxcurl.net-core

解决方案


看起来解决问题的最简单方法就是使用 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);

推荐阅读