一个名称的多个控制器在ASP.NET MVC 2
-
26-09-2019 - |
题
我尝试运行我的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的文件中的一个项目的引用解决