在使用MVC4.0的时候,难免会遇到在根目录下的Controllers中添加的控制器名称可能会跟在Areas中的某个区域下的控制器名称一样。这个时候访问Areas下面的Controller/Action是没有问题的,但是访问根目录下的地址是就会提示:
“
找到多个与名为“Home”的控制器匹配的类型。如果为此请求(“{controller}/{action}/{id}”) 提供服务的路由在搜索匹配此请求的控制器时没有指定命名空间,则会发生此情况。如果是这样,请通过调用含有 'namespaces' 参数的 'MapRoute' 方法的重载来注册此路由。
”
根据错误提示,我们需要在默认路由中定义“namespaces”参数的值
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new string[] { "XXXX.WebUI.Controllers" }//解决Controllers与Areas中控制器不能同名问题
);
至此就可以访问根目录下的地址了!