【发布时间】:2019-05-24 10:51:46
【问题描述】:
需要拒绝具有任何正文内容的请求(意味着body 的大小> 0)。我尝试使用RequestSizeLimit 属性,但它似乎无法正常工作。
代码:
[HttpPost]
[RequestSizeLimit(0)]
public IActionResult Test()
{
return Ok();
}
我正在使用Postman 进行测试。提供“qwerty”作为POST 请求正文的值。这是Kestrel 日志的样子:
信息:Microsoft.AspNetCore.Server.Kestrel[17] 连接 ID“0HLN06I1687S4”错误请求数据:“请求正文太大。” Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException: 请求正文过大。在 Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException.Throw(RequestRejectionReason 原因)在 Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1MessageBody.ForContentLength.OnReadStarting() 在 Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.MessageBody.TryStart() 在 Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.MessageBody.ConsumeAsync() 在 Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication 1 应用程序)在 Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync[TContext](IHttpApplication 1 申请)
尽管如此 - 我仍然看到 200(OK)响应。我可以毫无问题地调试该方法。看起来 - 过滤器工作正常 - 但由于某种原因它没有触发异常。预期的行为 - 为请求返回“有效负载太大”(413) 状态并且未触发方法中的代码执行。
任何想法或解释 - 为什么我会看到这种行为?
【问题讨论】:
-
我可能有点傻,但是你的方法返回了 OK?
-
@AsheraH 是的。这个在例子中。这段代码根本不应该被执行。
标签: c# asp.net-core-2.1 kestrel-http-server