Не уверен, что вы можете.
Я обошел вокруг 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
{
}