...猜猜我是第一个问这个的?
假设您有以下路由,每个路由都在不同的 Controller 上声明:
[HttpGet, Route("sign-up/register", Order = 1)]
[HttpGet, Route("sign-up/{ticket}", Order = 2)]
...您可以在 MVC 5.0 中使用相同的代码执行此操作,除了
Order
范围。但是升级到 MVC 5.1 后,您会在问题标题中收到异常消息:Multiple controller types were found that match the URL. This can happen if attribute routes on multiple controllers match the requested URL.
所以新
RouteAttribute.Order
属性只是 Controller 级别?我知道在 AttributeRouting.NET 中你可以做 SitePrecedence
也。当所有操作都在同一个 Controller 中时,是否有像上面这样的路由的唯一方法?更新
抱歉,我应该提到这些路由在 MVC Controller 上,而不是 WebAPI。我不确定这如何影响 ApiControllers。
最佳答案
如果你知道 ticket
将是 int
您可以在路由中指定该类型以帮助解析路由:
[HttpGet, Route("sign-up/register")]
[HttpGet, Route("sign-up/{ticket:int}")]
这种方法对我有用,根据 user1145404 的评论,其中包括指向 Multiple Controller Types with same Route prefix ASP.NET Web Api 的链接。
关于asp.net-mvc-5 - 找到多个与 URL 匹配的 Controller 类型。如果多个 Controller 上的属性路由与请求的 URL 匹配,就会发生这种情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21414448/