首页 > 解决方案 > .Net Core Web API Post 路由端点未命中

问题描述

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

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

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

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

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

标签: .net-coreasp.net-web-api-routingwebapi

解决方案


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

如上所述,AddProduct 操作方法与以下 url 匹配:

https://localhost:xxxx/addproduct

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

要正确路由到该方法,请删除前导斜杠,如下所示:

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

有关属性路由或控制器路由的更多信息,请阅读 Microsoft Docs 上的此页面


推荐阅读