Por que é tão difícil obter valores de rota fora do contexto do controlador?

Não entendo qual é o problema por trás disso, por que é tão fácil obter valores de rota dentroRequest do controlador, mas quase impossível fazer a mesma coisa emHttpContext.Current.Request?

Talvez eu simplesmente não conheça um caminho melhor e ele exista. Alguém pode confirmar que esta é a única maneira de obter dados de rota fora do controlador?

Exemplo
[Route("{id}"), HttpGet]
public IHttpActionResult Test()
{
    // Simple and easy
    var route1 = Request.GetRouteData().Values["id"];

    // Wat. This is also ~6 times slower
    var routeValues = (IHttpRouteData[]) HttpContext.Current.Request.RequestContext.RouteData.Values["MS_SubRoutes"];
    var route2 = routeValues.SelectMany(x => x.Values).Where(x => x.Key == "id").Select(x => x.Value).FirstOrDefault();

    return Ok(route1 == route2); // true
}

questionAnswers(2)

yourAnswerToTheQuestion