在.net core2.0中,当上传文件大于30MB时,会报出: 服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值的问题。
针对此问题的解决思路如下:
1)、在Startup.cs中增加如下代码:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
//配置文件大小限制 1GB
services.Configure<FormOptions>(options =>
{
options.ValueLengthLimit = 1073741824;
options.MultipartBodyLengthLimit = 1073741824;
});
//........
}
2)、在具体的方法前增加如下代码:
/// <summary>
/// 上传附件
/// </summary>
/// <returns></returns>
[RequestSizeLimit(1073741824)]
[HttpPost]
[Route("FileUpLoad")]
public ActionResult<IEnumerable<string>> UpLoadFile([FromForm]IFormCollection formCollection, string projectId, string stage_id)
{
//.......
}
3)、在项目中增加web.config文件,具体代码如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<!-- 1 GB -->
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
通过以上的三个步骤即可解决系统中报报出的问题:请求筛选模块被配置为拒绝超过请求内容长度的请求, 这是一项安全功能。请不要更改此功能,除非您完全清楚更改的影响范围。您可以配置 IIS 服务器以拒绝内容长度大于指定值的请求。如果请求的内容长度大于所配置的长度,便会返回此错误。如果需要增加内容长度。