【发布时间】:2026-01-08 03:05:02
【问题描述】:
我不明白这背后的原因是什么,为什么在控制器的Request 中获取路由值如此容易,但在HttpContext.Current.Request 上却几乎不可能做同样的事情?
也许我只是不知道更好的方法并且它存在。有人可以确认这是在控制器之外获取路由数据的唯一方法吗?
示例
[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
}
【问题讨论】:
标签: c# asp.net asp.net-web-api routes asp.net-web-api2