代码之家  ›  专栏  ›  技术社区  ›  spectacularbob

Asp.net核心RequestSizeLimit仍然执行操作

  •  4
  • spectacularbob  · 技术社区  · 7 年前

    我正在使用ASP.net核心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 NullReferenceException 当它尝试迭代列表时。

    有没有办法告诉红隼在达到大小限制时返回413?

    3 回复  |  直到 7 年前
        1
  •  1
  •   Mikes3ds    7 年前

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

    if(updatedList == null)
          return StatusCode(413, "Payload to big") ;
    
        2
  •  1
  •   saravana manikandan    7 年前

    您可以通过以下方式在全局范围内限制大小:

    .UseKestrel(kestrolOptions =>
    {
        kestrolOptions.Limits.MaxRequestBodySize = 1_000_000;
    ..
    
        3
  •  0
  •   spectacularbob    7 年前

    当我升级到2.1时,问题就消失了。我不能确定2.0是否有一个bug,但是在将所有的NuGet包更新到2.1之后,它的行为和预期的一样。

    因为我没能像其他人那样去寻找解决问题的办法。

    推荐文章