【问题标题】:Asp.net Core RequestSizeLimit still executes actionAsp.net Core RequestSizeLimit 仍然执行动作
【发布时间】:2018-12-21 00:10:17
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我用.NET Core 2.0.0 测试你的代码,但它运行完美。有没有可以重现这个问题的项目?

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      当我升级到 2.1 后问题就消失了。我不能肯定地说 2.0 有错误,但是在将所有 NuGet 包更新到 2.1 后,它的行为符合预期。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-17
        • 1970-01-01
        • 2016-09-13
        • 1970-01-01
        • 1970-01-01
        • 2012-05-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多