zoukankan      html  css  js  c++  java
  • .net core IIS/Kestrel上传大文件的解决方法

    大文件,就是内容的大小超过了一定数量的文件,比如1个GB的文件。

    站点一般会限制上传文件的大小,如果超过了一定限制,则会报错误。

    在处理大文件上传的方式上,IIS代理和Kestrel宿主服务器的处理方式是不一样的。

    一、Kestrel宿主服务器

     解决方法如下:

    第一种处理方式:在需要处理大文件的接口中使用RequestSizeLimitAttribute特性。如:

            /// <summary>
            /// 上传文件
            /// </summary>
            [HttpPost("upload")]
            [RequestSizeLimit(1000_000_000)]
            public IActionResult Upload()
            {
               //......
            }

    RequestSizeLimit(限制的容量大小),括号内就是需要限制的上送内容的大小值。 

    第二种处理方式:在需要处理大文件的接口中使用DisableRequestSizeLimitAttribute特性。如:

            /// <summary>
            /// 上传文件
            /// </summary>
            [HttpPost("upload")]
            [DisableRequestSizeLimit]
            public IActionResult Upload()
            {
               //......
            }

    DisableRequestSizeLimitAttribute特性是指禁用对Http请求的大小限制。该特性可以加在Controller和Action上。若无需要,尽可能不要用此种方式放开对请求内容大小的限制。

    二、IIS代理服务器

    IIS代理服务器只认web.config配置文件里面的maxAllowedContentLength字段值。

    解决方法如下:

    第一步:在项目中创建一个web.config文件,如果有的话,就省略此步骤。如:

    在web.config文件中添加如下代码:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.webServer>
       
      </system.webServer>
    </configuration>

    第二步:将security节点加入到system.webServer节点中;

     <security>
          <requestFiltering>
            <!--单位:字节。 -->
            <requestLimits maxAllowedContentLength="524288000" />
            <!-- 1 GB -->
          </requestFiltering>
     </security>

    完整的web.config内容如下所示:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.webServer>
        <security>
          <requestFiltering>
            <!--单位:字节。 -->
            <requestLimits maxAllowedContentLength="524288000" />      
          </requestFiltering>
        </security>
      </system.webServer>
    </configuration>

    maxAllowedContentLength的值就是允许上送内容的最大值。如果项目已经部署在服务器上,则可以直接在web.config的system.webServer节点下加入security节点。

  • 相关阅读:
    新建mvc项目iis报404错误!
    .Net MVC HTTP 错误 404.0 Not Found 解决方法
    一个有趣的C#面试题
    parted分区
    sdp安装及实例
    dede:arclist标签按自定义字段排序
    dedecms标签快速
    也谈string.Join和StringBuilder的性能比较
    WinForms 实现气泡提示窗口
    各种“禁用窗口上的关闭按钮”方法总结及源码
  • 原文地址:https://www.cnblogs.com/williamwsj/p/9641758.html
Copyright © 2011-2022 走看看