ASP.NET MVC路由冲突

时间:2016-01-12 20:02:56

标签: c# asp.net asp.net-mvc asp.net-mvc-routing

我的应用程序中有两条路线,每条路线都在不同的Controller中,如下所示:

[Route("forgot-password", Order = 1)]
[Route("{variable}", Order = 2)]

当我运行应用程序时,我得到了异常:

  

找到了与URL匹配的多种控制器类型。这个可以   如果多个控制器上的属性路由匹配请求,则会发生   URL。

请记住,这些操作位于不同的ControllersOrder Controllers属性似乎不适用于asp.net mvc routing

如何让此方案在$http.get('/someUrl').success(successCallback); // Request would go over HTTP even if the page is served via HTTPS 中运行?我想使用基于属性的路由,我不想更改我的网址。

2 个答案:

答案 0 :(得分:0)

解释了错误背后的机制here(我猜你正在使用Web API)。简而言之,优先权仅在控制器内得到尊重。

此外,我不清楚为什么你想要这样的通用路线,如:

[Route("{variable}")]

答案 1 :(得分:0)

问题是应用程序中的所有路径都已存储在一起。即使它位于不同的控制器中,它也是相同的类型,因此它们可以相互“看到”。在您的情况下,“忘记密码”“{variable}”具有相同的格式,这就是为什么显示多条路线的错误。正如@ NightOwl888所说,您可以使用RouteConfig创建路线,但在这种情况下,您必须更改路由值。