.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文件,如果有的话,就省略此步骤。如:

.net core IIS/Kestrel上传大文件的解决方法

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

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

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

 <security>
<requestFiltering>
<!--单位:字节。 -->
<requestLimits maxAllowedContentLength="524288000" />
<!-- 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节点。

上一篇:Hyperledger Fabric 1.0 从零开始(五)——运行测试e2e


下一篇:Tsung安装与使用