У меня есть. NET Core 3.1 API, который имеет две конечные точки, которые я использую для тестирования некоторого промежуточного программного обеспечения для обработки ошибок, которое я пишу. Я использую Swagger UI для тестирования этого API.
Проблема, с которой я столкнулся, заключается в том, что если во время выполнения моего запроса POST возникнет какое-либо исключение, оно будет возвращено обратно как ответ 405 и даже не вызовет промежуточное ПО обработки ошибок, которое я пишу. Это происходит для запроса ALL POST через мой API, а не только для тестового, который я показываю.
Я решил попробовать такой же простой метод GET и, к моему удивлению, когда в него было сгенерировано исключение, он вызвал бы мое промежуточное программное обеспечение для обработки ошибок, которое затем записывает ответ 500 к вызывающей стороне. Вот весь код контроллера:
[Route("api/[controller]")]
[ApiController]
public class TestingController : ControllerBase
{
[HttpPost]
[Route("TestPost")]
public IActionResult TestPost([FromBody] string test)
{
throw new Exception();
}
[HttpGet]
[Route("TestGet/{test}")]
public IActionResult TestGet(string test)
{
throw new Exception();
}
}
Так почему бы метод POST возвращать 405 resposne при возникновении исключения, но метод GET отвечает 500 ответом?
EDIT: Вот пример запроса POST, который я делаю
URL запроса: https://localhost: 44387 / api / Testing / TestPost
Тело запроса (JSON): " test "
Вот заголовки ответа, которые я получаю от POST:
allow: GET cache-control: no-cache дата: ср., 19 февраля 2020 17:58:22 GMT истекает: -1 прагма: без кэширования сервер: Microsoft-IIS / 10.0 статус: 405 x-powered-by: ASP. NET