asp.net-mvc-5 - 找到多个与 URL 匹配的 Controller 类型。如果多个 Controller 上的属性路由与请求的 URL 匹配,就会发生这种情况

标签 asp.net-mvc-5 attributerouting asp.net-mvc-controller asp.net-mvc-5.1

...猜猜我是第一个问这个的?

假设您有以下路由,每个路由都在不同的 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/

相关文章:

c# - 更改身份数据库

c# - VS 2015中的类库(包)在哪里?

c# - 区域内的mvc5属性路由找不到 View

c# - 属性路由继承

asp.net-mvc - ASP.NET MVC Controller 命名复数

asp.net-mvc - 在 ASP.NET MVC 中设置备用 Controller 文件夹位置

c# - 在我的 BaseController 构造函数中获取现有 session

asp.net-mvc - 模板和 htmlAttributes 的自定义编辑器

entity-framework - 在 ASP.NET MVC5 Identity 系统中进一步扩展 ApplicationUser 类

c# - MVC 属性路由 - 使用 GET 和 POST 的默认 Controller 索引