繁体   English   中英

Asp.net Core RequestSizeLimit仍然执行操作

[英]Asp.net Core RequestSizeLimit still executes action

我正在使用ASP.net Core 2.0和MVC。 我有一个控制器操作,我想将请求大小限制为1MB。 我添加了RequestSizeLimit属性,如下所示:

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

当上传<1MB时,它按预期工作。 当它大于1MB时,我希望服务器返回413的状态,但是相反, updatedList参数为null并且操作正常执行,当它尝试迭代列表时运行NullReferenceException

当达到大小限制时,有没有办法告诉Kestrel返回413?

可能不是最好的,但它会同时起作用。

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

你可以通过全局限制大小

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

当我升级到2.1时,问题就消失了。 我不能肯定地说2.0有一个bug,但是在将所有NuGet包更新到2.1之后它表现得如预期的那样。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM