Как получить доступ к значениям маршрута asp.net mvc в GetVaryByCustomString? - PullRequest
2 голосов
/ 21 октября 2011

Я запускаю сайт asp.net mvc 2 под .NET 3.5, и я хотел бы иметь доступ к значениям маршрутизации в моем обработчике GetVaryByCustomString в Global.asax. Мне неясно, как (если вообще) получить доступ к определенным значениям маршрута, учитывая, что HttpContext передано в функцию.

Для справки вот подпись GetVaryByCustomString

public override string GetVaryByCustomString(HttpContext context, string custom)
{
    // how do I get at route values here from context?
}

Может ли кто-нибудь указать мне правильное направление?

Ответы [ 3 ]

6 голосов
/ 08 июля 2014

Для любого, кто пытается сделать эту работу на ASP.NET MVC 4.0 и более поздних версиях, это правильный путь.

 HttpContextBase currentContext = new HttpContextWrapper(context);
 RouteData routeData = RouteTable.Routes.GetRouteData(currentContext);

Это немного хак, но это единственное решение на данный моментпоскольку проверка кэширования выполняется перед маршрутизацией, поэтому данные о маршруте недоступны.

3 голосов
/ 21 октября 2011
var routeData = ((MvcHandler)httpContext.Handler).RequestContext.RouteData;

var routeValues = routeData.Values;
var matchedRouteBase = routeData.Route;
var matchedRoute = matchedRouteBase as Route
0 голосов
/ 17 марта 2012

Вот более простой способ

httpContext.Current.Request.RequestContext.RouteData
...