AmbiguousActionException:匹配多个动作。 以下操作匹配路由数据并满足所有约束

我正在使用ASP.NET Core MVC创建一个网站。 当我点击某个动作时,我收到此错误:

AmbiguousActionException: Multiple actions matched. The following actions matched route data and had all constraints satisfied: Web.Controllers.ChangeEventsController.Create (Web) Web.Controllers.ProductsController.CreateChangeEvent (Web) 

这就是我在我的ProductsController的index.cshtmlm中定义我的动作的方法:

 Create Change Event 

这是我的路线:

  app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); 

以下是我定义操作的方式:

 // ChangeEventsController [HttpGet("{id}")] public IActionResult Create(Guid id) // ProductsController [HttpGet("{id}")] public IActionResult CreateChangeEvent(Guid id) 

我做错了什么?

更新

感谢@MegaTron的回复,但是我想知道为什么我不能为不同的控制器提供相同的操作路径。 如果我有许多控制器,每个创建实体,我觉得你提出的解决方案不会很好地扩展。

尝试:

 // ChangeEventsController [HttpGet("Create/{id}")] public IActionResult Create(Guid id) // ProductsController [HttpGet("CreateChangeEvent/{id}")] public IActionResult CreateChangeEvent(Guid id) 

在每个控制器上方添加[Route("api/[controller]")]属性以使操作路径位于不同的路径下,然后您可以在每个控制器中使用相同的[HttpGet("{id}")] 。 这应该很好地扩展。 请参阅microsoft docs中的此示例。

如果不使用[Route]批注为每个控制器指定路由,则ASP.NET Core MVC无法知道选择处理请求的操作。