Файл web.config
применяется к классическому стеку IIS, который работает только в Windows. Используя Docker, вы запускаете новый независимый от платформы веб-сервер Kestrel, представленный в ASP.NET Core.
Global
Чтобы установить ограничение глобально для каждого запроса (что эквивалентно настройке IIS), просто установите свойство, добавив .UseKestrel
с соответствующими параметрами в Program.CreateWebHostBuilder
, напримерэто:
.ConfigureKestrel((context, serverOptions) => {
serverOptions.Limits.MaxRequestBodySize = 73400320;
});
Вы можете найти все параметры конфигурации в документации ASP.NET Core . Не забудьте установить версию ASP.NET Core слева. Это важно, потому что API мог измениться, например, с 2,1 до 2,2.
Локальный
В качестве альтернативы, также возможно просто увеличить его для определенных действий, используя аннотации данных:
[RequestSizeLimit(73400320)]
public IActionResult MyActionMethod() {
// ...
}
Как предотвратить эти сюрпризы в будущем
Эта проблема, вероятно, вызвана Visual Studio, которая автоматически устанавливает IIS в качестве веб-сервера по умолчанию вместо Kestrel. Таким образом, вы используете IIS при локальной разработке и Kestrel при хостинге в Docker. К сожалению, это не на 100% интуитивно понятно в VS. Вы должны проверить, появляется ли контекстное меню при нажатии на стрелку рядом с кнопкой отладки, например:
IrCms isдинамически заменяется именем проекта вашего приложения. Если это выбрано, вы получаете Kestrel во время отладки. Так что проект на скриншоте хорошо настроен для Kestrel. Может быть подтверждено консольным окном, которое открылось и говорит прослушивание порта XYZ после отладки.
IIS не открывает ни одного окна. Просто его значок появится слева от ваших часов на панели задач:
Первое, что я обычно делаю в новых проектах ASP.NET Core, этоменяя IIS на пустельгуЯ бы рекомендовал это особенно при развертывании в Docker, поэтому вы всегда используете один и тот же веб-сервер. В общем, Kestrel - это легкая альтернатива для рассмотрения, когда не требуется никаких специальных функций.