首页 > 解决方案 > 在控制器级别增加 .net 控制器 MaxResponseBufferSize

问题描述

我已阅读 MaxResponseBufferSize 可以在启动时通过以下代码设置

 public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.ConfigureKestrel(x => x.Limits.MaxResponseBufferSize = 10485760).UseStartup<Startup>();
            });

是否在启动时设置控制器/动作级别的限制。就像在某些属性中添加它一样

标签: c#asp.net-corekestrel

解决方案


简短的回答:没有

MaxResponseBufferSizelimit 是一个低级的 Kestrel 实现细节,它独立于HttpContext. 它不知道当前正在执行(或完成执行)哪个控制器或动作,因此您无法调整它在动作中的工作方式。

原因RequestSizeLimit是可配置的,与MaxResponseBufferSize默认情况下不读取请求正文不同,除非您隐式(使用模型绑定[FromBody])或显式(Request.Body.Read*方法)从请求中读取正文流。这发生在端点级别,因此 ASP.NET Core 公开了相关管道,以便在需要时更易于配置。


推荐阅读