До сих пор мы использовали наши сервисы на ASP.NET Core 1.1. Мы только что обновились до ASP.NET Core 2.2, который прошел довольно гладко.
Однако мы размещаем службу Azure App в Windows, которая, в свою очередь, работает под управлением IIS.
Теперь у нас естьнастраиваемый раздел в web.config
для ограничения максимальной длины контента, поэтому, когда пользователи загружают файлы, которые они знают перед фактической загрузкой, до предела, если их загрузка не удалась:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="api/0.1/files">
<system.web>
<httpRuntime maxRequestLength="409600" executionTimeout="3600"/>
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="419430400" />
</requestFiltering>
</security>
</system.webServer>
</location>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore"
path="*"
verb="*"
modules="AspNetCoreModule"
resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="dotnet"
arguments=".\webapp.dll"
stdoutLogEnabled="false"
stdoutLogFile="\\?\%home%\LogFiles\stdout"
hostingModel="OutOfProcess"
forwardWindowsAuthToken="false"/>
</system.webServer>
</location>
</configuration>
Теперь вызывается маршрут api/0.1/files
(и, конечно, все маршруты «под» файлами) приведут к 404 не найденному результату со следующим сообщением об ошибке:
Ресурс, который вы ищете, был удален, изменилось его имя или являетсявременно недоступно.
Единственное исправление, которое я смог найти, заключалось в глобальном ограничении длины контента:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore"
path="*"
verb="*"
modules="AspNetCoreModule"
resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="dotnet"
arguments=".\webapp.dll"
stdoutLogEnabled="false"
stdoutLogFile="\\?\%home%\LogFiles\stdout"
hostingModel="OutOfProcess"
forwardWindowsAuthToken="false"/>
<security>
<requestFiltering>
<!--400 MByte-->
<requestLimits maxAllowedContentLength="419430400" />
</requestFiltering>
</security>
</system.webServer>
</location>
</configuration>
Каков будет правильный способ установить ограничение вконкретный маршрут?