Увеличьте максимальный размер буфера ответов контроллера .net на уровне контроллера

#c# #asp.net-core #kestrel

Вопрос:

Я прочитал, что размер MaxResponseBufferSize может быть установлен при запуске с помощью кода, например

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

Есть ли возможность настройки этого ограничения на уровне контроллера/действия вместо этого при запуске.
Например, добавить его в какой-нибудь атрибут там

Комментарии:

1. [RequestSizeLimit(100000000)] ? Не уверен, что это поможет, хотя никогда им не пользовался

2. Я знаю об этом. Цель этого-входящий запрос

Ответ №1:

Короткий ответ: нет.

MaxResponseBufferSize ограничение-это сведения о реализации пустельги низкого уровня, которые не зависят от HttpContext . Он понятия не имеет, какой контроллер или действие выполняется в данный момент (или завершено выполнение), поэтому вы не можете настроить способ его работы в рамках действия.

Причина RequestSizeLimit , по которой можно настроить, MaxResponseBufferSize заключается в том, что тело запроса не считывается по умолчанию, если вы неявно (с помощью привязки модели [FromBody] ) или явно ( Request.Body.Read* методы) не считываете поток тела из запроса. Это происходит на уровне конечной точки, поэтому ASP.NET Ядро предоставляет соответствующие трубопроводы, чтобы при необходимости упростить настройку.