Вот архитектура приложения:
- Веб-API, написанный на ASP.NET Core.
- Dockerfile создает веб-приложение, используя
microsoft/dotnet:2.1-sdk
, и выполняет API, используя microsoft/dotnet:aspnetcore-rumtime
. Приложение скомпилировано и помещено в /app
.
- Команда для запуска API:
ENTRYPOINT ["dotnet", "/app/WebAPI.dll"]
- Этот API-интерфейс развернут в реестре контейнеров Azure (реестр Docker).
- Служба приложений Azure используется для размещения API. Служба приложений настроена для извлечения данного контейнера из ACR.
- API работает точно так же, как и ожидалось.
Проблема в том, что нам нужно принимать размеры тела сообщения, превышающие ограничение в 28,6 МБ, установленное IIS и Kestrel. Мы попробовали подходы по этому URL безуспешно: https://www.talkingdotnet.com/how-to-increase-file-upload-size-asp-net-core/
- Добавление файла Web.config в проект не помогает, так как он не обнаруживается средой выполнения ASP.NET Core, работающей в контейнере. (внутри контейнера работает только Kestrel)
- Добавление атрибута
[RequestSizeLimit]
не решает проблему, поскольку я считаю, что фактическое ограничение имеет место на уровне Azure.
- Если я правильно понимаю, приложения Dockerized ASP.NET Core, работающие на Kestrel внутри контейнеров, подвергаются обратному прокси с сервера Azure IIS. Таким образом, на сервере IIS, вероятно, существует ограничение в 28,6 МБ.
- Установка ограничения размера в
UesKestrel
также не оказывает влияния.
- Когда мы попытались реализовать «промежуточное» решение, мы обнаружили, что
Features
не является свойством объекта context
, как указано в коде на странице.
Нам нужно знать, как увеличить максимальный размер сообщения. Это нормально, если это на уровне всего плана обслуживания приложений. Так как мы запускаем контейнеры, мы не знаем, где мы могли бы разместить файл Web.config с соответствующей настройкой.