asp.net core action冲突小记
一个asp.net core controller这样写:
[ApiController] [Route("api/[controller]/[action]")] public class OrderController : ControllerBase { [HttpPost("create")] public IActionResult CreateOrder() { mediator.Publish(new UserInfo("","fffff")); _orderService.CreateOrder("fff"); return Ok("Order created and event published."); } }
这样写,发现通过URL:http://localhost:5008/api/order/Create报:404,感觉奇怪,后来问了Deepseek才知道是
-
控制器级别路由:
[Route("api/[controller]/[action]")]要求所有动作都使用action名称。
-
HttpPost 路由:
[HttpPost("create1")]试图设置自定义路由,但与控制器级别路由冲突
解决方法也简单:要么去掉控制器级别的action,改由action自己控制;要么用路由器级别的action。感觉两者冲突时选择框架选择一个即可,现状是两者冲突时都不可用,奇怪的表现!~
浙公网安备 33010602011771号