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.

Другие вопросы по тегам