Java службы приложений Azure - отправка запроса на загрузку не соответствует размеру
У меня есть служба приложений Azure Linux для запуска JAR загрузки Spring.
В этом приложении у меня есть несколько форм для загрузки файлов в приложение Spring, которые затем обрабатываются.
Все это отлично работает локально и на экземпляре AWS Elastic Beanstalk.
В службе приложений Azure Linux с файлами размером около 4 МБ происходит сбой.
Я предполагаю, что у экземпляра IIS, который, вероятно, работает перед службой приложений, есть своего рода ограничение, которое блокирует почтовый запрос определенного размера.
Я искал какие-либо настройки, которые я могу сделать на лазурном портале, чтобы разрешить загрузку файлов большего размера, но просто не смог их найти.
Есть идеи?
Как это было решено
(если вы используете Spring boot и Maven для развертывания и т. д.)
На основе ответа @GeorgeChen ниже.
Создайте web.config в корне моего проекта Maven, например:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<!-- 100 MB in kilobytes -->
<httpRuntime maxRequestLength="204800" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<!-- 100 MB in bytes -->
<requestLimits maxAllowedContentLength="209715200" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
Изменен файл POM в разделе плагинов Maven:
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>1.6.0</version>
<configuration>
<schemaVersion>V2</schemaVersion>
<resourceGroup>XXXXXXXXX</resourceGroup>
<appName>YYYYYYYYYYY</appName>
<region>northeurope</region>
<pricingTier>B2</pricingTier>
<runtime>
<os>linux</os>
<javaVersion>jre8</javaVersion>
<webContainer>jre8</webContainer>
</runtime>
<deployment>
<resources>
<resource><directory>${project.basedir}/target</directory>
<includes>
<include>*.jar</include>
</includes>
</resource>
<resource>
<directory>${project.basedir}</directory>
<targetPath>/</targetPath>
<includes>
<include>web.config</include>
</includes>
</resource>
</resources>
</deployment>
</configuration>
</plugin>
Теперь после упаковки и развертывания все работает, и загрузка может достигать 100 МБ через Azure.
1 ответ
Размер запроса по умолчанию составляет 4 МБ, вы можете получить его здесь: запрос в службу поддержки Руководство по утилите загрузки файлов. Поэтому вам необходимо увеличить этот лимит, если вы хотите разрешить загрузку и скачивание файлов большего размера.
Вы можете установить maxRequestLength
а также maxAllowedContentLength
ценности в вашем web.config
файл.
Вот пример web.config.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<!-- 100 MB in kilobytes -->
<httpRuntime maxRequestLength="204800" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<!-- 100 MB in bytes -->
<requestLimits maxAllowedContentLength="209715200" />
</requestFiltering>
</security>
</system.webServer>
Дополнительную информацию вы можете найти в этом блоге:Загрузить большой файл на asp.net или на веб-сайт в Windows Azure.
Кроме того, вы можете загрузить файл в хранилище Azure для обработки больших файлов. Речь идет об использовании веб-API и Azure Blob.