• 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;
                });

      重新发布

      至此,结束!

  • 相关阅读:
    network / ethtool / eno
    java使用秘钥 对字符串进行加密、解密
    windows服务器环境下使用jenkins自动化部署vue前端项目
    ESXi下的常用命令
    使用kubeadm手动安装Kubernetes(附带Dashboard)
    cobbler高可用方案
    Linux服务器端口access改为trunk all
    Corosync fence盘替换
    Linux服务器CPU性能模式
    本地代码上传github失败常见错误
  • 原文地址:https://www.cnblogs.com/wskxy/p/14867122.html
Copyright © 2020-2023  润新知