zoukankan      html  css  js  c++  java
  • IIS .Net Core 413错误和Request body too large解决办法

    项目中有一个通过WebApi接口上传视频文件的需要。之前在测试的时候,一直采用的只有8M多的文件,结果发布以后,需要上传一个近百M的视频文件。上传后,直接失败,接口没有任何返回。通过查找IIS的网站请求日志,看到了返回413的错误

    413错误解决办法

    1、修改IIS 网站的配置编辑器

    在IIS管理器中,选中网站目录,打开配置编辑器。找到下面的目录。将 maxAllowedContentLength修改一下。默认是30000000,不到30M。这边修改成了200M。

    2、修改网站Web.config配置文件

    加入下面这段配置

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <location path="." inheritInChildApplications="false">
          
        <system.webServer>
          <handlers>
            <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
          </handlers>
          <aspNetCore processPath="dotnet" arguments=".WebApi.dll" stdoutLogEnabled="false" stdoutLogFile=".logsstdout" hostingModel="inprocess" />
            <security>
              <requestFiltering>
                  <requestLimits maxAllowedContentLength="209715200" />
              </requestFiltering>
            </security>
        </system.webServer>
      </location>
    </configuration>

    经过这两步的设置,这个时候再通过接口上传,就会返回错误 Request body too large

    这两个步骤,因为当时都修改了,不确定是否只要设置Web.confgi文件就可以,还是都要设置。为了避免麻烦。就都设置了。

    Request body too large 错误解决方法

    1、修改Startup.cs

    public void ConfigureServices(IServiceCollection services)
    {
                services.AddFxServices();
                services.AddAutoMapper();
                //解决文件上传Request body too large
                services.Configure<FormOptions>(x =>
                {
                    x.MultipartBodyLengthLimit = 209_715_200;//最大200M
                });
    }

    2、修改接口方法

    加上 [DisableRequestSizeLimit]

    这个时候将项目重新发布部署一下,低于200M的文件就可以正常上传了。 

    注意:上面的解决方法只适用于将.Net Core项目部署在IIS下。

    如果是部署Linux系统下(参考其他博主的解决方法,具体没有进行测试论证,仅供参考)

    需要在 Program.cs 添加如下代码

    public static IWebHost BuildWebhost(string[] args) => 
       WebHost.CreateDefaultBuilder(args)
          .UseStartup<Startup>()
          .UseKestrel(options => {
               options.Limits.MaxRequestBodySize = 209715200; // 200M
          })
         .Build();
  • 相关阅读:
    Android连载7-动语添加碎片
    JavaScript连载6-转化为Number和Boolean类型、运算符
    Java连载111-timer定时器、反射机制概述
    用conda创建虚拟环境的一些常用命令
    Java内存分析
    Java语言中的Class类
    线程协作
    LeetCode刷题笔记第26题
    LeetCode刷题笔记第20题(括号匹配)
    LeetCode刷提笔记第1332题
  • 原文地址:https://www.cnblogs.com/leoxuan/p/14115505.html
Copyright © 2011-2022 走看看