Возвращение метода 405, не разрешенного из NotFound () - PullRequest
0 голосов
/ 27 сентября 2019

В приложении 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...