Привет всем У меня есть проблема с маршрутизацией MVC3 и областями:
Мой маршрут совпадает, но контроллер никогда не вызывается, вместо этого я получаю ошибку 404.
Я установил решение MVC3с 2 проектами:
- Один из них является основным проектом MVC: CityServices
- Один для области: CityServices.Demo
![ProjectSetup](https://i.stack.imgur.com/pyVNQ.png)
В моем регионе я регистрирую следующий маршрут:
public class TestAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Test";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Test_default",
"Test/{controller}/{action}",
new { controller = "Stuff", action = "ListAll" }
);
}
}
Содержимое StuffController.cs:
public class StuffController : Controller
{
public ActionResult ListAll()
{
List<Stuff> lstStuff = new List<Stuff>
{
new Stuff()
{
Id = 0,
Name = "HEeey",
Value = 10.456f
},
new Stuff()
{
Id = 1,
Name = "Beeee",
Value = 456789.47879999f
},
new Stuff()
{
Id = 2,
Name = "HooAAaoo",
Value = 0f
}
};
return Json(lstStuff);
}
}
Я регистрирую область в основном проекте:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
//RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
}
Мой маршрут совпадает: http://host/Test Но я всегда получаю ошибку 404.
Есть идеи?
Спасибо, - Джереми
Редактировать: Здесьявляется доказательством того, что маршрут соответствует:
![enter image description here](https://i.stack.imgur.com/piDZ4.png)
Найденное решение
Итак, подведем итог. Мой унаследованный класс AreaRegistration не находился в том же пространстве имен, что и мои контроллеры. Поскольку у меня не было никаких представлений (это просто спокойный websvc), мне не пришлось использовать MvcContribs, что, кажется, полезно, когда у вас есть представления и контроллерыв проекте, отличном от основного сайта.
Надеюсь, это поможет, если вы ответите на этот вопрос;)