在.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 服務器以拒絕內容長度大於指定值的請求。如果請求的內容長度大於所配置的長度,便會返回此錯誤。如果需要增加內容長度。