【.Net】我用HttpListener监听了一个地址,但是HttpClient却掉不通?

背景

        我用HttpListener本机监听了一个端口,然后有用RestSharp写了一个HttpClient,之前用net4.8写的,后升级为6.0。

        升级后发现,HttpClient掉不通HttpListener了。直接返回502。 服务端完全就接收不到信息。

无奈,我还是把版本退回到net4.8。

解决

        最近,我又使用了一个6.0的项目,再次直面这个问题,最终发现是代理的问题,由于我长期开着网络代理软件,后把代理软件关闭后这个问题就解决了

至于原因,网络上没有找到相关的内容,于是我问了下GPT,回答如下:

可能的原因是在 .NET 4.8 和 .NET 6 中对于默认的网络配置有所不同。

在 .NET 4.8 中,`HttpClient` 默认使用系统级的代理配置。如果你的计算机上有全局代理设置或代理软件运行,并且在 .NET 4.8 中正常工作,那么 `HttpClient` 会自动使用该代理进行网络请求。

然而,在 .NET 6 中,默认的行为有所改变。.NET 6 引入了基于 SocketsHttpHandler 的新的默认 `HttpClient` 实现,它在默认情况下不会使用系统级代理配置。这意味着如果你的计算机上有全局代理设置或代理软件运行,你需要在代码中显式配置 `HttpClient` 的代理信息。

在 .NET 6 中,你可以通过以下方式配置 `HttpClient` 的代理信息:


var httpClientHandler = new HttpClientHandler();
httpClientHandler.Proxy = new WebProxy("http://your-proxy-address:port"); // 替换为你的代理地址和端口
var httpClient = new HttpClient(httpClientHandler);

确保将 "http://your-proxy-address:port" 替换为实际的代理地址和端口。

这样,显式配置代理信息后,`HttpClient` 在 .NET 6 中应该能够正常与 `HttpListener` 进行通信。

请注意,代理的配置方式可能因代理类型和网络环境而异。如果上述方法不起作用,请确保你正确理解你的代理设置,并在 `HttpClientHandler` 中适当地进行配置。

希望这能帮助解决你在 .NET 6 中使用 `HttpClient` 的代理问题。如果你还有其他问题,请随时提问。

这个说法,不知道对不对哈,欢迎评论区讨论~~~~ 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code bean

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值