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

C# HttpWebRequest调用长耗时API超时无响应如何解决?

C#调用长耗时API超时问题解决

问题背景

我需要从API获取字符串,编写了如下代码:

public string Get()
{      
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

    request.Timeout= timeOut;
    request.ReadWriteTimeout = timeOut;

    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    using (Stream stream = response.GetResponseStream())
    using (StreamReader reader = new StreamReader(stream))
    {
        return reader.ReadToEnd();
    }
}

我设置的timeout为20分钟(20*60000ms)。当API处理耗时约5分钟时,代码运行正常,可以正常拿到返回结果。
但当API处理耗时更长,约12分钟时就会出现问题:在Chrome浏览器中调用该API,12分钟后可以正常拿到结果,但使用C#程序调用相同API时无任何返回,即便API仅需12分钟就能处理完成,程序最终还是会在20分钟时抛出超时错误。
替换使用HttpClient替代HttpWebRequest时也出现了相同的问题。

问题原因

该问题是因为遗漏了ContinueTimeout参数的配置。该参数控制客户端发送带Expect: 100-continue头的请求后,等待服务端返回100 Continue响应的时长,默认值远低于20分钟。当API处理时间较长、服务端没有及时返回100 Continue响应时,客户端会一直阻塞等待,直到触发你配置的整体20分钟超时。

解决方案

在初始化HttpWebRequest时,额外配置ContinueTimeout参数即可,代码如下:

request.ContinueTimeout = timeOut;

配置后程序可正常调用12分钟耗时的API,不会再出现超时问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:54:01