我尝试运行我的ASP.NET MVC应用程序时收到以下错误:

  

为“帐户”请求发现下列匹配控制器:   uqs.Controllers.Admin.AccountController   MvcApplication1.Controllers.AccountController

我搜索项目MvcApplication1.Controllers.AccountController删除它,但我不能找到匹配。

我尝试注册的路由进行修复:

 routes.MapRoute(
     "LogAccount", // Route name
     "{controller}/{action}/{id}", // URL with parameters
     new { controller = "Account", action = "LogOn", id = "" },
     new string[] { "uqs.Controllers.Admin" } // Parameter defaults
 );

,但没有解决这个问题。

  

多种类型中发现的匹配   名为 '帐户' 控制器。

我怎样才能解决这个问题呢?

有帮助吗?

解决方案

您不能在您的应用程序名为Account一个以上的控制器,即使在不同的命名空间。

您必须有这些控制器通过Area(在ASP.NET MVC 2的特征)分开。

如果您进行查找AccountController你会发现一个名为Account应用程序中的所有控制器;并将其移动到关闭不同Areas如果你想他们两个,或者删除一个。

其他提示

如果你重构你的项目,并从“MVCApplication1”更改默认的命名空间和大会以“UQS”,你可以在你的bin目录2个组件(新一和旧)结束。你可以得到这个错误,因为的AccountController是在这两个组件。

老MVCApplication1.dll清洁你的bin目录。

有了这个相同的问题。清理垃圾桶里,我好去。

可以与提供的命名空间,即使发生在问题(因为它会导致相同的错误消息类似)稍微混乱的变化。 MVC 3,我认为是比MVC 2在这方面有点挑剔。


<强>短答案:

请确保您的控制器的命名空间其实在MapRoute电话!!

指定的命名空间

<强>长回答

我有3个方面:default ("") / Facebook / Store并且它们各自具有AdminController

我有这样映射(对于我的默认区)的路线:

routes.MapRoute(
     "Default",
     "{controller}/{action}/{id}",
     new { controller = "Gateway", action = "Index", id = UrlParameter.Optional },
     new string[] { "RR.Controllers.Main" }
);

要/管理的请求给出下列错误:

  

多种类型中发现的匹配   控制器命名为“管理员”。这个可以   如果发生了路由服务,这   请求( '{控制器} / {行动} / {ID}')   不指定名称空间...

     

为“管理员”的请求已经找到了   以下匹配控制器:

     

RR.FacebookControllers.AdminController结果   RR.Controllers.AdminController结果   RR.StoreControllers.AdminController

但是且慢!没有我指定的控制器命名空间....?这是怎么回事......?

那么它变成了我的默认区域的管理控制器命名空间是RR_MVC.Controller代替Rolling_Razor_MVC.Controller.Main

出于某种原因,在MVC 2此没有给出一个问题,但在MVC 3它。我觉得MVC 3只需要你更加明确时,有潜在的含糊之处。

AccountController自动地被ASP.NET MVC的Visual Studio模板生成。它位于Controllers\AccountController.cs。尝试在项目中搜索并删除它。

我有这个问题...

通过去除在.csproj的文件中的一个项目的引用解决

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top