public static void LogTo(this HttpRoute route, TextWriter writer) { var attributeRoute = route as IAttributeRoute; var info = RouteLoggingInfo.GetRouteInfo(route.RouteTemplate, route.Defaults, attributeRoute.SafeGet(r => r.QueryStringDefaults), route.Constraints, attributeRoute.SafeGet(r => r.QueryStringConstraints), route.DataTokens); LogWriter.LogRoute(writer, route.RouteTemplate, info); }
private static IEnumerable <object> GetRouteInfo() { return(from route in RouteTable.Routes.OfType <Route>() let attributeRoute = route as IAttributeRoute let routeInfo = RouteLoggingInfo.GetRouteInfo(route.Url, route.Defaults, attributeRoute.SafeGet(r => r.QueryStringDefaults), route.Constraints, attributeRoute.SafeGet(r => r.QueryStringConstraints), route.DataTokens) select new { methods = routeInfo.HttpMethods, url = routeInfo.Url, defaults = routeInfo.Defaults.Select(kvp => new { key = kvp.Key, value = kvp.Value }), constraints = routeInfo.Constraints.Select(kvp => new { key = kvp.Key, value = kvp.Value }), dataTokens = routeInfo.DataTokens.Select(kvp => new { key = kvp.Key, value = kvp.Value }) }); }