April
April

Reputation: 85

Multiple types were found that match the controller named 'Account'. MVC 4 & using RouteConfig.CS

I currently have 2 projects in same folder. Main

Problem:

Multiple types were found that match the controller named Account. This can happen if the route that services this request ('{controller}/{action}/{id}') does not specify namespaces to search for a controller that matches the request. If this is the case, register this route by calling an overload of the MapRoute method that takes a namespaces parameter.

The request for Account has found the following matching controllers:

Project1.Controllers.AccountController

Project2.Controllers.AccountController

I using Foundation 4. Thanks advance

Upvotes: 5

Views: 13574

Answers (2)

tno2007
tno2007

Reputation: 2158

I had the same problem when I copied an MVC project and renamed all the namespaces.

I tried the above solution but it did not work.

Visual Studio was still looking at the old namespace dll's even after I cleaned and rebuilt my project.

So the solution:

  • Right-click solution, click 'Clean Solution'
  • Manually delete everything in the /bin and /obj folders
  • Build your solution

Upvotes: 7

Code Uniquely
Code Uniquely

Reputation: 6373

you need to use the version with this signature

public static Route MapRoute(
       this RouteCollection routes,
       string name,
       string url,
       Object defaults,
   string[] namespaces )

To make it work just set up two almost identical routes - one which includes the project1 for the namespaces parameter and then a second identical version but use project2 in the namespaces parameter. That said, it would generally be less confusing, to use different names if you can...

routes.MapRoute(
    name: "Default_Project1",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional,
    namespaces: new string[] { "Project1" } }
);

routes.MapRoute(
    name: "Default_Project2",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional,
    namespaces: new string[] { "Project2" }
);

Upvotes: 8

Related Questions