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

上传超28.5MB文件至Blob存储时遇连接重置问题求助

解决大文件上传Blob存储时连接重置&HttpPost未触发的问题

听起来你遇到的是典型的ASP.NET Core请求大小限制导致的问题,毕竟28.5MB这个阈值刚好接近框架默认的配置上限。我来给你拆解几个排查和解决的方向:

1. 调整ASP.NET Core的表单请求大小配置

默认情况下,ASP.NET Core会限制表单请求的总大小,防止恶意大请求压垮服务器。你需要在项目配置里修改两个关键参数:

全局表单大小限制

在Program.cs里添加全局配置:

builder.Services.Configure<FormOptions>(options =>
{
    // 这里设置为100MB,你可以根据需求调整
    options.MultipartBodyLengthLimit = 104857600; // 计算方式:100*1024*1024
});

单个上传接口的大小限制

如果你的上传接口有单独的特性标记,也要同步调整数值:

[HttpPost]
[RequestSizeLimit(104857600)] // 允许该接口接收最大100MB的请求
public async Task<IActionResult> UploadFiles()
{
    // 你的上传逻辑代码
}

2. 检查Kestrel服务器的请求限制

Kestrel本身也有请求体大小的限制,需要在appsettings.json里补充配置:

"Kestrel": {
  "Limits": {
    "MaxRequestBodySize": 104857600 // 同样设置为100MB
  }
}

或者通过Program.cs代码配置:

builder.WebHost.ConfigureKestrel(options =>
{
    options.Limits.MaxRequestBodySize = 104857600;
});

3. 确认表单提交的前端逻辑

如果是用AJAX提交表单,要确保FormData的处理正确,不要手动设置错误的请求头:

const fileInput = document.getElementById('files');
const formData = new FormData();

// 遍历选中的文件添加到FormData
for (const file of fileInput.files) {
    formData.append('UploadFiles', file);
}

// 发起上传请求
fetch('/YourController/UploadFiles', {
    method: 'POST',
    body: formData
})
.then(res => res.json())
.catch(err => console.error('上传失败:', err));

注意:不要手动设置Content-Type: multipart/form-data,浏览器会自动处理并添加正确的边界标识,手动设置反而可能导致解析失败。

4. 大文件推荐用Blob分块上传

如果文件超过100MB,直接单文件上传很容易出现超时或连接问题,建议用Azure Blob存储的分块上传功能,通过SDK实现更稳定:

using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;

public async Task UploadLargeFileToBlob(IFormFile file, string blobConnStr, string containerName)
{
    var blobServiceClient = new BlobServiceClient(blobConnStr);
    var containerClient = blobServiceClient.GetBlobContainerClient(containerName);
    var blobClient = containerClient.GetBlobClient(file.FileName);

    // 配置分块参数,比如每块10MB,支持断点续传
    var uploadOptions = new BlobUploadOptions
    {
        TransferOptions = new StorageTransferOptions
        {
            MaximumConcurrency = 2,
            InitialTransferSize = 10 * 1024 * 1024,
            MaximumTransferSize = 10 * 1024 * 1024
        }
    };

    await blobClient.UploadAsync(file.OpenReadStream(), uploadOptions);
}

最后排查点

如果以上配置都调整后还是有问题,建议检查:

  • 服务器的反向代理(比如IIS、Nginx)是否有额外的请求大小限制,比如IIS的maxAllowedContentLength配置
  • 浏览器控制台的网络请求详情,是否返回413 Request Entity Too Large这类明确的错误码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:52:08