I receive the following error when trying to run my ASP.NET MVC application:
The request for \'Account\' has found the following matching controllers:
A slightly confusing variation on the problem (similar in that it causes the same error message) can occur even with namespaces supplied. MVC 3 I think is a little pickier than MVC 2 on this front.
Short Answer:
Make sure the namespace of your controller is in fact the namespace specified in the MapRoute
call!!
Long Answer:
I have 3 areas : default ("")
/ Facebook
/ Store
and they each have AdminController
I have the route mapped like this (for my default area):
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Gateway", action = "Index", id = UrlParameter.Optional },
new string[] { "RR.Controllers.Main" }
);
A request to /admin gave the following error :
Multiple types were found that match the controller named 'admin'. This can happen if the route that services this request ('{controller}/{action}/{id}') does not specify namespaces...
The request for 'admin' has found the following matching controllers:
RR.FacebookControllers.AdminController
RR.Controllers.AdminController
RR.StoreControllers.AdminController
But wait a minute! Didn't I specify the controller namespace.... ? What's going on.... ?
Well it turned out my default area's admin controller namespace was RR_MVC.Controller
instead of Rolling_Razor_MVC.Controller.Main
.
For some reason in MVC 2 this didn't give a problem, but in MVC 3 it does. I think MVC 3 just requires you to be more explicit when there's potential ambiguities.