【问题标题】:Azure App Service Java - Post request for upload failing for sizeAzure App Service Java - 发布上传请求大小失败
【发布时间】:2020-01-25 14:55:06
【问题描述】:

我有一个用于运行 Spring Boot JAR 的 Azure Linux 应用服务。

在这个应用程序中,我有几个表单用于将文件上传到 Spring 应用程序,然后得到处理。

这一切都在本地和 AWS Elastic Beanstalk 实例上完美运行。

在 Azure Linux 应用服务上,文件超过 4MB 时会失败。

我的猜测是,可能在应用服务前面运行的 IIS 实例具有阻止超过一定大小的发布请求的种类限制。

我一直在寻找可以在 azure 门户上进行的任何设置,以允许上传更大的文件,但一直找不到。

有什么想法吗?


如何解决

(如果您使用 Spring boot 和 Maven 进行部署等)

基于以下@GeorgeChen 的回答。

在我的 Maven 项目的根目录上创建一个 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>
</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>

现在打包和部署后一切正常,通过 Azure 上传可以达到 100MB。

【问题讨论】:

    标签: azure azure-web-app-service azure-app-service-envrmnt azure-linux


    【解决方案1】:

    默认请求大小为 4MB,您可以在此处获取:support request File Upload utility guidelines。因此,如果您想允许上传和下载较大的文件,则必须提高该限制。

    您可以在 web.config 文件中设置 maxRequestLengthmaxAllowedContentLength 值。

    这是一个示例 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>
    

    更多信息,您可以参考这篇博客:Upload Large File In asp.net or website in Windows Azure

    除此之外,您还可以选择将文件上传到 Azure 存储来处理大文件。这是关于使用Web API and Azure Blob

    【讨论】:

      猜你喜欢
      • 2019-06-02
      • 2019-01-02
      • 2016-08-01
      • 2018-10-20
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多