c# - 在 VPS Linux 上使用 HTTPClient C# 超时,ping 和 curl 正常,没有防火墙
问题描述
我想用 httpclient 检索页面的内容。我做了一个简单的方法,在visual studio上效果很好。
private async Task<string> Connection(string Url)
{
using HttpClient client = new();
client.DefaultRequestHeaders.Add("Accept", "application/json");
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 OPR/77.0.4054.277");
client.DefaultRequestHeaders.Add("Cache-Control", "no-cache, no-store, must-revalidate");
client.DefaultRequestHeaders.Add("Accept-Language", "fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7");
client.DefaultRequestHeaders.Add("Pragma", "no-cache");
double timestamp = GlobalMethod.Timestamp();
string json = await client.GetStringAsync(Url);
return json;
}
但是当我在 linux VPS(Ubuntu、主机 OVH、.NET 5)上运行我的应用程序时,Httpclient 返回错误超时。
在我的 VPS 上,对我要检索的 url 的 ping 和 CURL 函数工作正常。但不是 Httpclient。我的邮递员请求的设置相同,没有问题。
你对这个问题有想法吗?它看起来很像这个主题,但我不明白如何解决它:C# 中的 httpClient 调用超时,而 cUrl 正在工作
谢谢 !
超时错误:
System.Threading.Tasks.TaskCanceledException:由于配置的 HttpClient.Timeout 已过 100 秒,请求被取消。---> System.TimeoutException:操作被取消。---> System.Threading.Tasks.TaskCanceledException:操作被取消。---> System.IO.IOException:无法从传输连接读取数据:操作已取消。---> System.Net.Sockets.SocketException (125): 操作已取消 --- 内部异常堆栈跟踪结束 --- 在 System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancelToken) 在系统System.Net.Security.SslStream.ReadAsyncInternal[TIOAdapter](TIOAdapter 适配器,内存`1 缓冲区)中的 System.Net.Http.HttpConnection 中的 .Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.GetResult(Int16 令牌)。
解决方案
推荐阅读
- php - Klarna 支付接口
- ssl - Xampp 无效的 SSL 证书
- javascript - JQuery 自动完成显示名称并使用 php 和 mysql 维护 id
- android - Android - 如何从子 AlertDialog 更新父 AlertDialog
- reactjs - 是否可以在 React Link 中通过匹配传递道具
- python - 简单的for循环迭代字典python
- java - 克隆的 TXT 文件中的字符串总和
- laravel - 带有 cloudinary 的 spatie 媒体库
- php - 包含文件并获取变量,但不包含内容
- c# - 不显示自定义验证错误消息 asp.net