运行我的Web Api代码时,我收到此消息
Multiple types were found that match the controller named 'Home'. 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 'Home' has found the following matching controllers:
A.Controllers.HomeController
N.Controllers.HomeController
但我只有一个家庭控制器。发生了什么事?
答案 0 :(得分:2)
您可能已重命名MVC项目,旧DLL仍在bin文件夹中。请记住,ASP.NET MVC从bin文件夹中存在的所有程序集加载控制器。您必须在bin文件夹中查找所有程序集,并确保没有两次相同的控制器。
实际上,可以在同一个应用程序中使用相同的控制器名称两次。例如,假设您想在主要部分中使用HomeController,在某些区域中使用HomeController。配置路由时,您可以为包含控制器的命名空间指定命名空间约束:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "MvcApplication1.Controllers" }
);
并在您的区域:
context.MapRoute(
name: "Admin_default",
url: "Admin/{controller}/{action}/{id}",
defaults: new { action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "MvcApplication1.Areas.Admin.Controllers" }
);
答案 1 :(得分:1)
在编辑中查看(主页)名称 - >找。并查看它是否用于任何其他网页。还要确保页面不会从任何其他页面继承此控件。