В приложении ASP.NET Core 2.2 MVC у меня есть View, который отправляет Ajax-запрос обратно в контроллер, этот запрос проходит и попадает в контроллер, где выполняется условие, которое должно возвратить NotFoundResult (404):
$.ajax({
type: "POST",
url: "/My/AjaxAction",
data: {
name: name
}
})
[HttpPost]
public async Task<IActionResult> AjaxAction(string name)
{
if (/* condition */)
{
return NotFound();
}
//....
}
При тестировании я получаю ответ 405 «Метод не разрешен» вместо 404. Я отлаживал и проверял, что попал в строку NotFound()
.Однако EndpointMiddleware меняет ответ на 405, и я не знаю, почему:
info: Microsoft.AspNetCore.Mvc.StatusCodeResult [1] Выполнение HttpStatusCodeResult, установка кода состояния HTTP 404 info: Microsoft,Microsoft.AspNetCore.Routing.EndpointMiddleware [0] Выполнение конечной точки «Метод HTTP 405 не поддерживается»
Другие действия Ajax с использованием POST в приложении по-прежнему работают нормально, проблема заключается только в этом.
Обновление: если я не удовлетворяю условию NotFound()
и вместо этого возвращаю Ok()
как обычно, тогда он возвращает правильный ответ, как и должен.Это только 404, которые меняются на 405.