.net-core - .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 的有效负载。为什么这条路线没有被击中?
解决方案
问题在于 HttpPost 上使用的路由属性。
如上所述,AddProduct 操作方法与以下 url 匹配:
https://localhost:xxxx/addproduct
即使您使用令牌替换控制器名称,通过使用前导斜杠,您将覆盖 AddProduct 方法上的该路由。
要正确路由到该方法,请删除前导斜杠,如下所示:
[HttpPost("addproduct")]
[Consumes("application/json")]
public ActionResult<IEnumerable<ProductDTO>> AddProduct([FromBody] ProductDTO productDto)
有关属性路由或控制器路由的更多信息,请阅读 Microsoft Docs 上的此页面