Multiple Controllers with one Name in ASP.NET MVC 2

后端 未结 6 1006
情深已故
情深已故 2021-01-11 14:40

I receive the following error when trying to run my ASP.NET MVC application:

The request for \'Account\' has found the following matching controllers:

相关标签:
6条回答
  • 2021-01-11 15:19

    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.

    0 讨论(0)
  • 2021-01-11 15:19

    I had this problem...

    Solved by removing a project reference in one of the .csproj files

    0 讨论(0)
  • 2021-01-11 15:23

    You can't have more than one controller named Account in your application, even in different namespaces.

    You have to have these controllers split up by Area (a feature in ASP.NET MVC 2).

    If you conduct a Find for AccountController you'll find all controllers named Account in your application; and move them off into different Areas if you want both of them, or delete one.

    0 讨论(0)
  • 2021-01-11 15:26

    Had this same problem. Cleaned the bin and I was good to go.

    0 讨论(0)
  • 2021-01-11 15:34

    AccountController is automatically generated by the ASP.NET MVC Visual Studio template. It is located in Controllers\AccountController.cs. Try searching for it in the project and delete it.

    0 讨论(0)
  • 2021-01-11 15:37

    If you refactor your project and change the default Namespace and Assembly from "MVCApplication1" to "uqs", you may end up with 2 assemblies in your bin directory (the new one and the old one). You can get this error because the AccountController is in both assemblies.

    Clean your bin directory of the old MVCApplication1.dll.

    0 讨论(0)
提交回复
热议问题