В том же решении есть приложение ASP.NET MVC4 Slick.App
и библиотека классов Awesome.Mvc.Lib
. Awesome.Mvc.Lib содержит один класс контроллера.
public class ShinnyController : Controller
{
[HttpGet]
public string Index()
{
return "Hello, from Awesome.Mvc.Lib";
}
}
Если я просто добавлю ссылку из Slick.App в Awesome.Mvc.Lib, запустите приложение и пункт brower на /shinny
, я действительно увижу ответ "Привет, от 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".
У меня проблемы, это правильное поведение по умолчанию. Мой вопрос в том, как явным образом сказать, какие контроллеры выставлены, и предотвратить использование маршрута по умолчанию для соответствия контроллерам в отдельной библиотеке классов?