Не уверен, что вы можете.
Я ткнул вокруг HttpContext.Current
и обнаружил, что на втором (и последующих запросах) коллекция HttpContext.Current.Items
содержит экземпляр класса System.Web.Routing.UrlRoutingModule.RequestData
. К сожалению, этот класс является закрытым, поэтому вы не можете получить доступ к его данным. Однако в отладчике кажется, что он содержит информацию, которую вы ищете (не уверен, почему она не существует по первому запросу, хотя).
В качестве альтернативы, вы можете просто использовать фильтр действий и добавить его к классу BaseController, из которого производятся все ваши контроллеры? Что-то вроде:
public class LoggingActionAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
var controllerName = filterContext.Controller.ControllerContext.RouteData.Values["controller"];
var actionName = filterContext.Controller.ControllerContext.RouteData.Values["action"];
}
}
Затем создайте базовый класс контроллера с этим атрибутом:
[LoggingAction]
public abstract class BaseController : Controller
{
}
yerp ... мы наследуем базовый контроллер, поэтому подход ActionFilter работает –
Кстати, у нас уже было o verride of «Инициализировать (RequestContext requestContext)», поэтому я поместил код, который хранит его в контексте. Кажется, хорошо работает. –
не работает, если мы хотим изменить язык в текущем потоке. (Проверено только в MVC 3 ...). Вы знаете, как мы можем использовать данные маршрута для изменения языка? – Nordes