Ejemplo n.º 1
0
        public bool TryGetUnitRoute(string host, out DomainConfig domain, out UnitRouteConfig unitRoute)
        {
            if (UrlHelper.IsIpHost(host))
            {
                foreach (var unit in CacheObjectManager.Instance.GetValue <GlobalRouteConfig>(CacheObjectName)
                         .UnitRoutes.Where(x => x.Domains != null && x.Domains.Length > 0))
                {
                    var d = unit.Domains.FirstOrDefault(x => host.Equals(x.Value, StringComparison.OrdinalIgnoreCase));
                    if (d != null)
                    {
                        domain    = d;
                        unitRoute = unit;
                        return(true);
                    }
                }
            }
            else
            {
                foreach (var unit in CacheObjectManager.Instance.GetValue <GlobalRouteConfig>(CacheObjectName)
                         .UnitRoutes.Where(x => x.Domains != null && x.Domains.Length > 0))
                {
                    var d = unit.Domains.FirstOrDefault(x => host.EndsWith(x.Value, StringComparison.OrdinalIgnoreCase));
                    if (d != null)
                    {
                        domain    = d;
                        unitRoute = unit;
                        return(true);
                    }
                }
            }

            domain    = null;
            unitRoute = null;
            return(false);
        }
Ejemplo n.º 2
0
        private RouteData GetRouteData(UnitRouteConfig unitRoute, DomainConfig domain, List <string> stack)
        {
            var routeData = new RouteData(this, new MvcRouteHandler());

            ControllerRouteConfig controller = null;

            if (stack.Count == 0)
            {
                controller = unitRoute.ControllerRoutes.FirstOrDefault(x => x.IsDefault);
            }
            else
            {
                controller = unitRoute.ControllerRoutes.FirstOrDefault(x => x.Name.Equals(stack[0], StringComparison.OrdinalIgnoreCase));
            }

            if (controller == null)
            {
                return(null);
            }

            ActionRouteConfig action = null;

            if (stack.Count <= 1)
            {
                action = controller.ActionRoutes.FirstOrDefault(x => x.IsDefault);
            }
            else
            {
                action = controller.ActionRoutes.FirstOrDefault(x => x.Readable.Equals(stack[1], StringComparison.OrdinalIgnoreCase));
            }

            if (action == null)
            {
                return(null);
            }

            routeData.Values.Add("unit", unitRoute.Name);
            routeData.Values.Add("domain", domain);
            routeData.Values.Add("controller", controller.Name);
            routeData.Values.Add("action", action.Name);
            routeData.Values.Add("parameters", stack.Skip(2).ToArray());

            return(routeData);
        }