Asp.net Core RequestSizeLimit仍会执行操作

时间:2018-12-21 00:10:18

标签: c# asp.net-core kestrel-http-server

我正在将ASP.net Core 2.0与MVC一起使用。我有一个控制器动作,我想将请求大小限制为1MB。我像这样添加了RequestSizeLimit属性:

[HttpPost]
[Authorize]
[RequestSizeLimit(1_000_000)]
public async Task<List<ResourceUploadResult>> Upload([FromBody]List<Resource> updatedList){
    //....
}

当上传的大小小于1 MB时,它可以正常工作。当它大于1MB时,我希望服务器返回状态413,但是updatedList参数为null,该操作正常执行,并在尝试迭代列表时运行到NullReferenceException中。

有没有一种方法可以告诉Kestrel在达到大小限制时返回413?

3 个答案:

答案 0 :(得分:1)

可能不是最好的,但是在此期间它会起作用。

if(updatedList == null)
      return StatusCode(413, "Payload to big") ;

答案 1 :(得分:1)

您可以通过以下方式全局限制大小:

.UseKestrel(kestrolOptions =>
{
    kestrolOptions.Limits.MaxRequestBodySize = 1_000_000;
..

答案 2 :(得分:0)

当我升级到2.1时,问题消失了。我不能肯定地说2.0有一个错误,但是在将所有NuGet软件包更新为2.1之后,它的表现均符合预期。

不幸的是,我没有更多有关原因的信息,因为寻求该问题解决方案的其他人可能无法像我一样升级他们的版本。