从RouteCollectionRoute获取路由列表

时间:2016-03-03 13:44:37

标签: c# linq routing

我希望从[{1}}获取RequestContext.RouteData.Routes

类型的所有路由

在调试器中打开时,我有选项"结果视图"向我提供System.Web.Mvc.Routing.RouteCollectionRoute的列表,其中包含我需要的信息。

如何在代码中获取此列表(或数组)?我尝试了foreach并且还查看是否有任何可以帮助我的LinQ-Methods(.ToList等)但没有成功。

2 个答案:

答案 0 :(得分:2)

Routes中没有RouteData这样的内容。 Proof

RouteData仅包含带有URL参数的字典。可能这不是你想要的。

但是你可以通过这种方式轻松获得所有路线:

var routeList = System.Web.Routing.RouteTable.Routes.ToList();

答案 1 :(得分:0)

FWIW,这对我来说不起作用,因为我试图获取URL清单。通常ApiExplorer可以正常工作,但我们使用自定义模型绑定器,ApiExplorer似乎不支持。更多信息:

https://forums.asp.net/t/1835575.aspx?ApiExplorer+and+parameters+of+complex+type

无论如何,我能够使用以下代码获取API URL清单:

    var httpConfiguration = Request.GetConfiguration(); //For reference

    var routes = httpConfiguration.Routes
            .Select(route => (IEnumerable)route)
            .Single(route => route!=null)
            .Cast<HttpRoute>();

    var manifest = routes
            .Select(route => route.RouteTemplate)
            .ToList();

丑陋,但无论好坏,它都有效。