Esempio n. 1
0
        public CodeHttpWebRoute(Route originalRoute, CodeHttpRoute httpRoute)
            : base(originalRoute.Url, originalRoute.Defaults, originalRoute.Constraints, originalRoute.DataTokens, originalRoute.RouteHandler)
        {
            this.originalRoute = originalRoute;

            this.ActionMapping     = httpRoute.ActionMapping;
            this.ControllerMapping = httpRoute.ControllerMapping;

            if (httpRoute.ControllerDescriptors != null)
            {
                this.ControllerTypes = httpRoute.ControllerDescriptors
                                       .ToDictionary(p => p.Key, p => p.Value.ControllerType, StringComparer.OrdinalIgnoreCase);
            }
        }
Esempio n. 2
0
        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);
        }