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
}