net core api上传下载大文件 413、400错误 IIS服务器

1、背景

  上传文件时,如果文件太大(一般指超过30M的文件)会报错,报错原因如下

  IIS服务器:限制大文件上传,报413错误码

  net  core api项目:限制大文件上传,报400错误码

  

2、首先解决IIS 413错误

  定义我们打算上传的字节大小:这里我定义为200M=209715200B

  1)打开服务器,选中我们部署的【api项目】--双击【配置编辑】--Section选择(system.webServer/security/requestFiltering),

  修改maxAllowedContentLength如图:

  

  成功解决413问题。(这些配置记录在web.config里面)

  如果没解决,看   2)

  解决了,看  3)

  2)一般这样就能解决413问题了,如果没有解决,关注一下:Section选择(system.web/httpRuntime)

  修改exectionTimeout=我们预计的时间

  修改maxRequestLength=209715200

  

  这样应该能够完全解决。

  3)这时候,我们就想到了,以后更新项目,如果web.config不注意被覆盖了,又得重新操作以上操作,这是比较烦人的

  若以,这里考虑可以直接在发布项目的时候,将我们的配置添加到web.config中

  在api项目添加web.config配置文件,内容为(从上述操作的web.config文件copy出来即可)

<configuration>
    <system.webServer>
        <security>
            <requestFiltering>
                <requestLimits maxAllowedContentLength="209715200" />
            </requestFiltering>
        </security>
    </system.webServer>
</configuration>

  右键属性,复制到输出目录,设置如果较新则复制

  这样在生成中会把我们自定义的配置输出到web.config中,就无需在IIS上执行操作

   

3、然后解决api项目  400错误

  1)打开项目,接口添加特性

        [RequestFormLimits(MultipartBodyLengthLimit = 209715200)]
        [HttpPost("Up/{id}")]

  成功解决400问题。

  2)如果没有解决,在Startup-ConfigureServices添加

            services.Configure<IISServerOptions>(options =>
            {
                options.MaxRequestBodySize = 209715200;
            });

  重新发布

  至此,结束!

 

posted @ 2021-06-09 15:36  wskxy  阅读(1032)  评论(0编辑  收藏  举报