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

ASP.NET Core中如何在Swagger模拟HTTP 206部分内容?

配置Swagger支持HTTP 206部分请求(断点续传)

你的API已经通过ProducesResponseType标记了206响应,但要在Swagger里正常测试这个大文件下载场景,需要完成两步关键配置:确保API实际支持Range请求,以及让Swagger UI提供Range请求头的输入入口。

1. 让API真正处理部分请求

ASP.NET Core的PhysicalFileResult默认未启用Range请求处理,需要手动开启。修改你的接口代码:

[HttpGet("Files/{id:guid}/{name}")]
[ProducesResponseType(typeof(PhysicalFileResult), 200)]
[ProducesResponseType(typeof(PhysicalFileResult), 206)]
public async Task<PhysicalFileResult> GetFooFile(Guid id, string name, CancellationToken cancellationToken)
{
    var fileResult = PhysicalFile(Foo(parameters));
    // 启用Range请求支持,API才会处理断点续传逻辑
    fileResult.EnableRangeProcessing = true;
    return fileResult;
}

2. 配置Swagger显示Range请求头

Swagger UI默认不会展示Range请求头,需要添加自定义操作过滤器来显示该参数:

第一步:创建操作过滤器类

public class AddRangeHeaderFilter : IOperationFilter
{
    public void Apply(OpenApiOperation operation, OperationFilterContext context)
    {
        // 仅给标记了206响应的接口添加Range请求头
        if (operation.Responses.ContainsKey("206"))
        {
            operation.Parameters ??= new List<OpenApiParameter>();
            operation.Parameters.Add(new OpenApiParameter
            {
                Name = "Range",
                In = ParameterLocation.Header,
                Description = "指定请求的文件字节范围,格式示例:bytes=0-1023",
                Required = false,
                Schema = new OpenApiSchema
                {
                    Type = "string",
                    Example = new OpenApiString("bytes=0-1023")
                }
            });
        }
    }
}

第二步:注册过滤器到Swagger

在Program.cs(或Startup.cs)的Swagger配置中添加这个过滤器:

builder.Services.AddSwaggerGen(c =>
{
    // 注册自定义过滤器
    c.OperationFilter<AddRangeHeaderFilter>();
    // 你的其他Swagger配置(比如文档信息、注释等)
});

3. 在Swagger UI中测试206请求

启动API后打开Swagger UI,找到对应的文件下载接口:

  • 在请求头区域找到新增的Range参数,输入符合格式的值(比如bytes=0-1023)
  • 发送请求,此时API会返回206 Partial Content响应,同时携带Content-Range头和对应的文件片段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:17:23