#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 Ядро предоставляет соответствующие трубопроводы, чтобы при необходимости упростить настройку.