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

Swagger UI选择文件后Execute按钮失效问题及上传方案

问题原因与修复方案

我之前处理过类似的Swagger UI文件上传无响应的问题,结合你的代码和配置来看,主要是这几个点出了问题:

核心问题分析

  1. Bearer认证配置错配:你在Swagger里配置的安全方案叫authorization,但操作处理器却用了bearer,名称不匹配导致Swagger UI的授权逻辑在处理文件上传时悄悄出错,却没抛出明显日志。而且你把Bearer令牌当成ApiKey类型配置了,实际上Bearer属于HTTP认证方案,类型应该是Http,这会让Swagger UI的内部验证逻辑卡住。
  2. NSwag版本太老:你用的v13.1.5存在multipart/form-data和授权组合的兼容性bug,这也是导致提交无响应的一个关键因素。
  3. 请求内容类型未明确声明:你的文件上传端点没告诉Swagger它要接收multipart/form-data格式,Swagger UI可能没正确识别请求类型,进而无法触发提交逻辑。

分步修复方案

1. 修正Swagger的Bearer认证配置

在Startup.cs的ConfigureServices里,把安全配置改成正确的HTTP Bearer类型,并且确保名称一致:

services.AddOpenApiDocument(document =>
{
    // 配置正确的Bearer HTTP认证方案
    document.AddSecurity("Bearer", Enumerable.Empty<string>(), new NSwag.OpenApiSecurityScheme
    {
        Type = NSwag.OpenApiSecuritySchemeType.Http,
        Scheme = "Bearer",
        Name = "Authorization",
        In = NSwag.OpenApiSecurityApiKeyLocation.Header,
        Description = "输入格式:Bearer {你的令牌}"
    });

    // 处理器的Scheme名称必须和上面的"Bearer"完全一致
    document.OperationProcessors.Add(
        new NSwag.Generation.Processors.Security.AspNetCoreOperationSecurityScopeProcessor("Bearer"));
});

2. 给文件上传端点添加内容类型声明

在你的CreateDocument控制器方法上加上[Consumes("multipart/form-data")]特性,让NSwag生成正确的OpenAPI请求定义:

[HttpPost("document")]
[Consumes("multipart/form-data")] // 明确告诉Swagger这是multipart请求
public ActionResult CreateDocument([FromForm]Document request)
{
    // 你的业务逻辑代码
}

3. 更新NSwag到最新稳定版

打开NuGet包管理器,把NSwag.AspNetCore更新到v14.x或更高的稳定版本,旧版本的multipart和授权兼容问题在新版本里已经修复了。

4. 逐步排查验证

  • 先临时注释掉Swagger文档里的全局security配置(就是去掉"security": [{"authorization": []}]这段),测试文件上传能不能正常提交。如果这时候可以了,就确认是安全配置的问题。
  • 清理Chrome缓存或者用隐私模式打开Swagger UI,避免旧的缓存文档干扰测试。

验证修复效果

做完上面的步骤后重启项目,在Swagger UI里找到文件上传的POST端点:

  1. 选择文件,填写其他表单字段;
  2. 点击Execute按钮,这时候应该能看到Network标签里出现multipart/form-data的请求,按钮也不会再无响应了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:45:30