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

.NET Core 7姿态检测应用大视频文件上传失败求助

解决.NET Core 7大视频文件上传失败问题

针对你遇到的姿态检测应用无法上传超过15秒视频的问题,你已配置Kestrel和FormOptions的大小限制,但可能遗漏了几个关键环节,以下是完整解决方案:

1. 确保表单设置正确的enctype

上传文件的表单必须指定enctype="multipart/form-data",否则大文件上传会被拦截。修改你的表单代码:

@using (Html.BeginForm("你的上传动作名", "控制器名", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.TextBoxFor(m => m.VideoFile, new {type = "file", @class = "form-control"})
    <!-- 其他表单元素 -->
    <button type="submit">上传视频</button>
}

2. 在控制器上传动作添加请求大小限制特性

即使全局配置了大小限制,仍需在处理上传的POST方法上添加[RequestSizeLimit]特性,确保动作层面的限制生效:

[HttpPost]
[RequestSizeLimit(512 * 1024 * 1024)] // 对应512MB的限制
public async Task<IActionResult> UploadVideo(VideoUploadViewModel model)
{
    // 你的视频上传处理逻辑
}

如果需要临时取消限制(不建议生产环境使用),可替换为[DisableRequestSizeLimit]。

3. 手动添加web.config适配IIS Express

.NET 7默认不会为新项目生成web.config,但Visual Studio使用的IIS Express依赖该文件配置请求限制。在项目根目录新建web.config文件,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- 配置最大允许请求大小为512MB(单位:字节) -->
        <requestLimits maxAllowedContentLength="536870912" />
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

4. 确认Kestrel配置顺序正确

确保Kestrel的配置代码在builder.Build()之前执行,否则配置不会生效:

var builder = WebApplication.CreateBuilder(args);

// 先配置Kestrel
builder.WebHost.ConfigureKestrel(options =>
{
    options.Limits.MaxRequestBodySize = 512 * 1024 * 1024;
});

// 再配置FormOptions
builder.Services.Configure<FormOptions>(options =>
{
    options.MultipartBodyLengthLimit = 512 * 1024 * 1024;
});

// 其他服务配置...

var app = builder.Build();

// 中间件配置...

app.Run();

额外检查项

  • 确认没有其他自定义中间件或第三方组件(如限流、安全中间件)拦截大请求
  • 测试时可先上传一个大小明确的测试文件(比如100MB),验证限制是否生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:40:19