.Net Core Web API Post 路由端点未被命中

.Net Core Web API Post route endpoint not being hit

我定义了以下 .Net Core API 路由。

[HttpPost("/addproduct")]
[Consumes("application/json")]
public ActionResult<IEnumerable<ProductDTO>> AddProduct([FromBody] ProductDTO){}

我已经在 class 上定义了以下属性:

[EnableCors()]
[Produces("application/json")]
[Route("api/[controller]")]

我这样称呼它:https://localhost:xxxxx/api/products/addproduct 我正在向它传递一个代表 productDTO 的负载。为什么这条路线没有被击中?

问题出在 HttpPost 上使用的路由属性。

如上定义,AddProduct 操作方法匹配以下 url:

https://localhost:xxxx/addproduct

即使您使用令牌替换控制器名称,通过使用前导斜杠,您也可以覆盖 AddProduct 方法中的路由。

要正确路由到方法,请像这样删除前导斜杠:

    [HttpPost("addproduct")]
    [Consumes("application/json")]
    public ActionResult<IEnumerable<ProductDTO>> AddProduct([FromBody] ProductDTO productDto)

有关一般属性路由或控制器路由的更多信息read this page on Microsoft Docs