Что я пытаюсь сделать, чтобы получить имя контроллера и имя действия в HttpModule.route.GetRouteData (httpContext) .Values ["action"] имеет значение null для атрибутивной маршрутизации
В OnBeginRequest моего HTTP модуля, у меня есть следующий код:
foreach (var route in RouteTable.Routes)
{
if (route.GetRouteData(httpContext) != null)
{
Console.WriteLine(string.Format(CultureInfo.InvariantCulture,
"Route info ====== {0}, {1} ======",
route.GetRouteData(httpContext).Values["controller"],
route.GetRouteData(httpContext).Values["action"]));
}
}
Если маршрут зарегистрировать с помощью обычной маршрутизации, как это:
routes.MapRoute("BlogDetails", "blog/{blogId}", new { controller = "Blog", action = "Details" });
И когда я иду: ~/блог/1 я мог видеть выход
"Route info ====== Blog, Details ======"
Но если это регистр с помощью:
routes.MapMvcAttributeRoutes();
И в контроллере у меня есть:
[RouteArea("blog", AreaPrefix = "blog")]
[Route("{action}")]
О действии у меня есть: [Route("{blogId}", Name="blogDetailRoute")]
И когда я иду: ~/блог/1 Я вижу только выход
"Route info ====== Blog, ======"
В данных маршрута отсутствует имя действия.
Что-то другое в маршрутизации атрибутов? Где можно найти имя действия?
Спасибо за помощь!
Отлично, я мог бы найти их в MS_DirectRouteMatches, спасибо! – Wei