Warum ist es so schwierig, Routenwerte außerhalb des Controller-Kontexts abzurufen?

Ich verstehe nicht, was dahinter steckt, warum es so einfach ist, Routenwerte zu ermittelnRequest von Controller, aber fast unmöglich, das gleiche auf zu tunHttpContext.Current.Request?

Vielleicht kenne ich einfach keinen besseren Weg und es existiert. Kann jemand bestätigen, dass dies die einzige Möglichkeit ist, Routendaten außerhalb des Controllers abzurufen?

Beispiel
[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
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage