/// <summary> /// Executes the initialization code. /// </summary> public static void Start() { CodeRoutingExtensions.Initialize(); CodeRoutingHttpExtensions.Initialize(); CodeRoutingSettings.Defaults.HttpConfiguration(GlobalConfiguration.Configuration); HttpRouteFactory.RouteConverters[typeof(Route)] = CodeHttpWebRoute.ConvertToWebRoute; }
public static Route ConvertToWebRoute(object route, RegisterSettings registerSettings) { HttpConfiguration httpConfig = registerSettings.Settings.HttpConfiguration(); CodeHttpRoute httpRoute = (CodeHttpRoute)route; // httpWebRoute is System.Web.Http.WebHost.Routing.HttpWebRoute // with HttpRoute property set to httpRoute GlobalConfiguration.Configuration.Routes.Add(null, httpRoute); Route httpWebRoute = (Route)RouteTable.Routes.Last(); RouteTable.Routes.RemoveAt(RouteTable.Routes.Count - 1); foreach (var item in httpWebRoute.Constraints.ToArray()) { var paramBindConstraint = item.Value as Web.Http.Routing.ParameterBindingRouteConstraint; if (paramBindConstraint != null) { httpWebRoute.Constraints[item.Key] = new ParameterBindingRouteConstraint(paramBindConstraint.Binder); continue; } var regexConstraint = item.Value as Web.Http.Routing.RegexRouteConstraint; if (regexConstraint != null) { httpWebRoute.Constraints[item.Key] = new RegexRouteConstraint(regexConstraint.Regex); continue; } var setConstraint = item.Value as Web.Http.Routing.SetRouteConstraint; if (setConstraint != null) { httpWebRoute.Constraints[item.Key] = new SetRouteConstraint(setConstraint.GetValues()); continue; } } var codeWebRoute = new CodeHttpWebRoute(httpWebRoute, httpRoute); CodeRoutingHttpExtensions.EnableCodeRouting(httpConfig); return(codeWebRoute); }