【发布时间】:2019-09-09 14:33:32
【问题描述】:
当提供有效路由但未找到 HTTP 方法时,我试图得到 405 错误。目前,应用程序返回 404,因为它需要路由和方法都匹配函数(MVC 中的预期行为)。
[HttpGet("api/action")]
public IActionResult ActionGet()
{
// code
}
[HttpPost("api/action")]
public IActionResult ActionPost()
{
//code
}
在本例中,如果我发出 DELETE 或 PUT 请求,它不会路由到其中任何一个函数,而只会返回 404。
我当前的解决方案是在每个控制器中创建一个函数,该函数具有硬编码的所有路由以捕获请求,无论使用什么 HTTP 方法。这只会引发 405 错误。
[Route("api/action", Order = 2)]
public IActionResult Handle405()
{
return StatusCode(405);
}
但是,我不太喜欢这种方式,因为它会在多个控制器上复制代码,并且每次在控制器中创建新操作时都需要更新硬编码的路由列表。
是否有更清洁的解决方案可以按照我想要的方式处理路线?比如使用属性或过滤器?
【问题讨论】:
-
试试 ProducesResponseType 属性
标签: c# asp.net asp.net-mvc asp.net-core asp.net-core-2.2