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

HttpClient上传大文件至Web API时出现Error while copying content to a stream错误

大文件上传连接中断问题解决方案

1. 调整HttpClient超时设置

默认HttpClient超时为100秒,大文件上传可能因传输耗时超过阈值导致连接中断。初始化HttpClient时设置更长超时:

// 示例:设置5分钟超时
_client = new HttpClient { Timeout = TimeSpan.FromMinutes(5) };

2. 配置服务器端文件大小限制

若使用ASP.NET Core Web API,需同时调整应用级和控制器级限制:

应用级配置(Program.cs/Startup.cs)

builder.Services.Configure<FormOptions>(options =>
{
    options.MultipartBodyLengthLimit = 100 * 1024 * 1024; // 允许最大100MB上传
});

控制器Action限制

[RequestSizeLimit(100 * 1024 * 1024)]
[RequestFormLimits(MultipartBodyLengthLimit = 100 * 1024 * 1024)]
public async Task<IActionResult> UploadFile()
{
    // 上传处理逻辑
}

IIS托管额外配置(web.config)

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="104857600" /> <!-- 100MB -->
    </requestFiltering>
  </security>
</system.webServer>

3. 启用分块传输编码

启用分块传输可避免一次性加载整个文件到内存,同时降低连接超时风险:

var content = new MultipartFormDataContent
{
    { new StreamContent(stream), "file", fileName }
};
// 开启分块传输
content.Headers.TransferEncodingChunked = true;

4. 检查客户端网络与安全设置

  • 确认客户端防火墙、杀毒软件未拦截大文件上传的网络连接
  • 排查网络稳定性,避免上传过程中出现丢包或连接中断

5. 重置上传流位置

确保上传前流处于起始位置,防止因流已读取完毕导致传输失败:

stream.Position = 0; // 重置流到起始点后再执行上传逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:35:28