找到了与URL匹配的多种控制器类型。 ASP.Net MVC

时间:2016-04-06 15:30:26

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

这是关于使用route属性定义路由。我有两个控制器

第一控制器

[AllowAnonymous]
[Route("Member/Login")]
public ActionResult Login(string returnUrl)
{
    ViewBag.ReturnUrl = returnUrl;
    return View();
}

第二控制器

[Route("{CategoryURL}/{Keywords}")]
public ActionResult BrowseProducts(string CategoryURL, string Keywords)
{

}

我收到以下错误如果尝试访问URL xyz.net/Member/Login

找到了与网址匹配的多种控制器类型。如果多个控制器上的属性路由与请求的URL匹配,则会发生这种情 该请求已找到以下匹配的控制器类型: XYZ.Controllers.AccountController XYZ.Controllers.CoursesController

我知道我有第二个控制器的可选参数,因此当我尝试访问xyz.net/Member/Login时,它会找到两个操作方法并获得多个控制器错误。

我的问题是,如何在不改变当前路线的情况下解决此问题。我尝试了Order,Precedence但没有成功。

2 个答案:

答案 0 :(得分:0)

正如我上面评论的那样,根据您选择的标签,您使用的是MVC 4,但MVC 5支持属性路由。如果您真的在MVC 5中,那么以下参考对您非常有用:

https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5/

最重要的是,当您注册路线时,您必须使用有效的属性路由 - >

public static void RegisterRoutes(RouteCollection routes)
{ 
    routes.MapMvcAttributeRoutes();
}

并确保您没有定义任何可能与您选择使用的属性相关的其他路线。

否则您选择的属性应该可以正常工作。非常简单的应用程序。

答案 1 :(得分:0)

web api约束也可能适用于您要完成的任务

http://www.asp.net/web-api/overview/web-api-routing-and-actions