Я использую ASP.NET Core 2.2 в Docker.Мне нужно добавить ограничение в 1 МБ для загрузки файлов и вернуть 400 Плохой запрос, когда он превысит.
Я пытался добавить [RequestSizeLimit(1000000)]
в действии
[HttpPost("{id:int}/configs")]
[RequestSizeLimit(1000000)]
public async Task<IActionResult> Add(int id, IFormFile file)
, а затем в моемErrorHandlingMiddleware:
public async Task Invoke(HttpContext context)
{
try
{
await _next(context);
}
catch (Exception ex)
{
switch (ex)
{
...
case BadHttpRequestException badRequestException when badRequestException.Message == "Request body too large.":
context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
await context.WriteResponse(new ErrorResponse("request", badRequestException.Message));
break;
}
}
Когда я запускаю его в режиме отладки без докера, он возвращает 400 неверных запросов.Но если он запускается в Docker, я получаю: код состояния 413 Слишком большой объект запроса и содержимое
<html>
<head>
<title>413 Request Entity Too Large</title>
</head>
<body>
<center>
<h1>413 Request Entity Too Large</h1>
</center>
<hr>
<center>nginx/1.15.6</center>
</body>
</html>
Как установить ограничение и вернуть запрос 400 Bab?
Я следую этой статье:http://www.binaryintellect.net/articles/612cf2d1-5b3d-40eb-a5ff-924005955a62.aspx но мне нужно вернуть 400, а у меня нет web.config