首页 > 解决方案 > 在 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 正在工作

API 链接:https ://api.store.nvidia.com/partner/v1/feinventory?skus=FR~NVGFT070~NVGFT080~NVGFT090~NVLKR30S~NSHRMT01~NVGFT060T~187&locale=FR

谢谢 !

超时错误:

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 令牌)。

标签: c#.netlinux

解决方案


我的 Debian 机器上也有同样的问题。https请求突然出现超时异常,但我之前根本没有执行任何配置步骤。该应用程序刚刚停止工作!我发现要解决的问题: https ://github.com/dotnet/runtime/issues/47267 据此,您需要禁用 ipv6。对于我的主机,我已经按照此处所述更改了 sysctl.conf:https ://wiki.it-kb.ru/unix-linux/debian/how-to-turn-off-ipv6-in-debian-linux 现在超时问题为我解决了。


推荐阅读