在同一个解决方案中,还有一个ASP.NET MVC4应用程序Slick.App
和类库Awesome.Mvc.Lib
.令人惊叹的Mvc.Lib包含一个控制器类.
public class ShinnyController : Controller
{
[HttpGet]
public string Index()
{
return "Hello, from Awesome.Mvc.Lib";
}
}
如果我加上Slick的参考资料.应用程序太棒了.Mvc.Lib,运行应用程序并将浏览器指向/shinny
,我将看到响应"Hello,from Awesome.Mvc.Lib".
这是我完全没有预料到的.我一直在想ASP.NET MVC尊重控制器所在的名称空间.所以,来自另一个名称空间的控制器没有公开,至少在我没有要求公开之前是这样.
我试图更改默认的路由注册,以使用namespaces参数.
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new [] { "Slick.App.Controllers" }
);
尽管如此,ShinnyController路由仍然与"/shinny"匹配.
我担心这是正确的默认行为.我的问题是,如何明确说明哪些控制器是公开的,并防止默认路由与单独类库中的控制器匹配?