.NET Core 5.0 Web API如何提升响应大小限制 无web.config配置方案
.NET Core 5.0 Web API 增大响应大小限制解决方案
你当前代码中添加的[RequestSizeLimit]、[RequestFormLimits]特性仅用于限制接口接收的上传请求大小,和返回响应的大小限制无关,可按以下几种场景配置响应大小规则:
1. 单个接口单独配置
直接给对应Action添加[ResponseSizeLimit]特性即可,单位为字节,示例为设置最大200M响应大小:
[HttpPost] [Route("ReconcileUpload")] [Consumes("multipart/form-data")] [RequestFormLimits(MultipartBodyLengthLimit = 268435456)] [RequestSizeLimit(52428800)] // 新增响应大小限制,200M=200*1024*1024=209715200字节 [ResponseSizeLimit(209715200)] [hasAccess("OPRT_TXN")] public ReconcileResponse ReconcileUpload([FromForm] IFormFile file, [FromQuery] BankChallanType FileType) { // 原有业务逻辑 }
2. 全局配置Kestrel服务器响应限制
如果需要所有接口统一生效,在Program.cs的CreateHostBuilder方法中添加Kestrel配置:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); webBuilder.ConfigureKestrel(options => { // 全局设置最大响应缓冲大小为200M,设为null则无限制 options.Limits.MaxResponseBufferSize = 209715200; }); });
3. IIS部署场景配置
如果服务部署在IIS上,可在项目根目录新建web.config文件,发布时会自动同步到部署目录,配置如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <security> <requestFiltering> <!-- 配置IIS允许的最大请求/响应大小,示例为200M --> <requestLimits maxAllowedContentLength="209715200" /> </requestFiltering> </security> <aspNetCore processPath="dotnet" arguments=".\你的项目名称.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess"> <handlerSettings> <!-- 取消IIS默认的响应缓冲限制 --> <handlerSetting name="responseBufferLimit" value="0" /> </handlerSettings> </aspNetCore> </system.webServer> </configuration>
4. 排查Postman自身限制
如果调试时可正常获取完整响应,Postman调用无法查看,大概率是Postman自身的响应大小限制触发,可打开Postman设置,在General标签下找到Max response size选项,调整为更大的数值,或选择Unlimited取消限制。
内容的提问来源于stack exchange,提问作者Bhavin Varsur
相关产品推荐
相关产品推荐

