You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET与PowerShell通过API下载JSON数据速度极慢,求问题原因

问题原因分析与解决方法

以下是几种可能导致.NET/PowerShell请求缓慢的原因及对应的解决方案:

1. TLS版本不匹配

部分API服务器仅支持TLS 1.2或更高版本,但.NET默认可能未启用这些高版本协议,导致握手过程中出现协商延迟或重试。

解决方法:
在PowerShell脚本开头添加TLS版本指定:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -bor [Net.SecurityProtocolType]::Tls13

C#代码中同步配置:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13;

2. 代理配置问题

.NET默认会使用系统代理设置,若系统代理配置有误(比如指向不可用的代理服务器),请求会在代理连接环节花费大量时间重试;而Postman/浏览器可能自动绕过代理或使用了不同的代理规则。

解决方法:
PowerShell中直接禁用代理:

$response = Invoke-RestMethod -Uri "https://DOMAIN/api/games" -Headers $headers -Proxy $null

C#中通过HttpClientHandler禁用代理:

var handler = new HttpClientHandler { Proxy = null, UseProxy = false };
var client = new HttpClient(handler);

3. 连接复用未启用

.NET的HttpClient若每次请求都新建实例,会导致无法复用TCP连接,每次请求都要重新完成握手流程;而Postman/浏览器默认会复用连接,大幅节省握手耗时。

解决方法:

  • C#中确保HttpClient为单例实例(比如通过依赖注入或静态单例实现),避免每次请求都新建对象。
  • PowerShell中复用HttpClient实例:
$handler = New-Object System.Net.Http.HttpClientHandler
$client = New-Object System.Net.Http.HttpClient($handler)
$client.DefaultRequestHeaders.Add("Authorization", "Bearer $token")
$response = $client.GetFromJsonAsync("https://DOMAIN/api/games").Result

4. 证书验证耗时

.NET对SSL证书的验证逻辑更严格,若服务器证书存在链不完整等问题,.NET会花费大量时间尝试验证证书链;而浏览器/Postman可能自动忽略此类问题或使用了不同的证书存储策略。

解决方法(仅测试环境使用,生产环境不建议):
PowerShell中临时禁用证书验证:

add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
    public bool CheckValidationResult(
        ServicePoint srvPoint, X509Certificate certificate,
        WebRequest request, int certificateProblem) {
        return true;
    }
}
"@
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy

C#中同步配置:

var handler = new HttpClientHandler { 
    ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true 
};
var client = new HttpClient(handler);

5. DNS解析延迟

.NET的DNS解析机制与浏览器/Postman不同,可能存在解析超时或未启用缓存的情况,导致每次请求都要重新解析域名。

解决方法:
可以尝试在hosts文件中添加域名与目标IP的映射,跳过DNS解析步骤;或手动指定可靠的DNS服务器进行解析。


内容的提问来源于stack exchange,提问作者DGINX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 01:57:38