public UrlRule GetCustomModuleRuleByParameters(string CultureCode, int TabId, string Parameters)
        {
            UrlRule rule = null;
            IEnumerable <UrlRule> rules;

            if (TabId == Null.NullInteger)
            {
                rules = _rules.Where(r => r.RuleType == UrlRuleType.Custom && r.Action == UrlRuleAction.Rewrite && r.IsMatch(Parameters) && r.RemoveTab == true);
            }
            else
            {
                rules = _rules.Where(r => r.RuleType == UrlRuleType.Custom && r.Action == UrlRuleAction.Rewrite && r.IsMatch(Parameters));
            }

            rules = rules.Where(r => !r.Url.Contains("[pagename]")); // pagename present, it not possible to know the right url

            if (TabId != Null.NullInteger)
            {
                //with tabid
                var tabRules = rules.Where(r => r.TabId == TabId);
                rule = GetFirstRule(tabRules, CultureCode);
            }
            else
            {
                rule = GetFirstRule(rules, CultureCode);
            }
            //without tabid
            if (rule == null)
            {
                var tabRules = rules.Where(r => r.TabId <= 0);
                rule = GetFirstRule(tabRules, CultureCode);
            }
            return(rule);
        }
Esempio n. 2
0
        private UrlRule GetCategoryLinkRule(DNNArticleInfo article, CategoryInfo category, ModuleInfo module, List <UrlRule> rules)
        {
            object selectedArticleList = ModuleSetting(MySettings.SelectedArticleList, module, -1); //List module to use to show the results

            if (selectedArticleList.ToString() == "-1")
            {
                return(null);
            }
            object selectedModule = ModuleSetting(MySettings.SelectedModule, module, -1); //base DNNArticle module
            string param          = string.Format("cid={0}&smid={1}&tmid={2}", category.ItemID, selectedArticleList, selectedModule);
            bool   duplicate      = rules.Any(urlRule => (urlRule.Parameters.StartsWith(param)) && urlRule.TabId == module.TabID);

            UrlRule rule = null;

            if (!duplicate)
            {
                rule = new UrlRule
                {
                    CultureCode = module.CultureCode,
                    TabId       = module.TabID,
                    RuleType    = UrlRuleType.Module,
                    Parameters  = param,
                    Action      = UrlRuleAction.Rewrite,
                    Url         = CleanupUrl(category.Title),
                    RemoveTab   = !_includePageName
                };
                rule.Url = FullCategoryTitleAsPath(category, module.ModuleID);
            }

            return(rule);
        }
        private UrlRule GetRedirectCustomModuleRule(string CultureCode, int TabId, string Url)
        {
            Url = Url.ToLower();
            UrlRule rule      = null;
            bool    RemoveTab = TabId == Null.NullInteger;
            var     rules     = _rules.Where(r => r.RuleType == UrlRuleType.Custom && r.IsMatchRedirectDestination(Url) && r.Action == UrlRuleAction.Rewrite /*&& r.RemoveTab == RemoveTab*/);

            //with tabid
            if (TabId != Null.NullInteger)
            {
                var tabRules = rules.Where(r => r.TabId == TabId);
                rule = GetFirstRule(tabRules, CultureCode);
            }
            //without tabid
            if (rule == null)
            {
                rule = GetFirstRule(rules, CultureCode);
            }
            if (rule != null)
            {
                rule = new UrlRule()
                {
                    CultureCode         = rule.CultureCode,
                    TabId               = rule.TabId,
                    RuleType            = rule.RuleType,
                    Action              = UrlRuleAction.Redirect,
                    Url                 = rule.RedirectDestination,
                    RedirectDestination = rule.Url,
                    RemoveTab           = rule.RemoveTab
                };
            }
            return(rule);
        }
        public UrlRule GetModuleRuleByParameters(string CultureCode, int TabId, string Parameters)
        {
            UrlRule rule = null;
            IEnumerable <UrlRule> rules;

            if (TabId == Null.NullInteger)
            {
                rules = _rules.Where(r => r.RuleType == UrlRuleType.Module && r.Action == UrlRuleAction.Rewrite && r.Parameters == Parameters && r.RemoveTab == true);
            }
            else
            {
                rules = _rules.Where(r => r.RuleType == UrlRuleType.Module && r.Action == UrlRuleAction.Rewrite && r.Parameters == Parameters);
            }

            if (TabId != Null.NullInteger)
            {
                //with tabid
                var tabRules = rules.Where(r => r.TabId == TabId);
                rule = GetFirstRule(tabRules, CultureCode);
            }
            //without tabid
            if (rule == null)
            {
                rule = GetFirstRule(rules, CultureCode);
            }
            return(rule);
        }
Esempio n. 5
0
        /// <summary>
        /// 验证输入是URL
        /// </summary>
        /// <param name="box">验证框</param>
        /// <param name="errorMessage">提示信息</param>
        /// <returns></returns>
        public static ValidBox Url(this ValidBox box, string errorMessage)
        {
            var newBox = new UrlRule {
                ErrorMessage = errorMessage
            }.ToValidBox();

            return(ValidBox.Merge(box, newBox));
        }
Esempio n. 6
0
        public void EvaluateShouldUseCustomErrorMessage()
        {
            // arrange
            var expected = "Test";
            var rule = new UrlRule( expected );
            var property = new Property<string>( "Url", "tempuri.org" );

            // act
            var actual = rule.Evaluate( property );

            // assert
            Assert.Equal( expected, actual.ErrorMessage );
        }
Esempio n. 7
0
        public void EvaluateShouldReturnExpectedResultForInvalidValue()
        {
            // arrange
            var rule = new UrlRule();
            var property = new Property<string>( "Url", "foo" );

            // act
            var actual = rule.Evaluate( property );

            // assert
            Assert.Equal( "The Url field is not a valid fully-qualified http, https, or ftp URL.", actual.ErrorMessage );
            Assert.Equal( 1, actual.MemberNames.Count() );
            Assert.Equal( "Url", actual.MemberNames.Single() );
        }
Esempio n. 8
0
        public void GivenUrlRuleWhenContainsRuleConfiguredThenShouldCorrectlyMatchValidUrls(string urlToMatch,
                                                                                            string urlFragment, bool expectedOutcome)
        {
            // Arrange
            var sut = new UrlRule();

            sut.WhenContains(urlFragment);

            // Act
            var result = sut.UrlMatches(urlToMatch);

            // Assert
            Assert.Equal(expectedOutcome, result);
        }
Esempio n. 9
0
        private void AddRule(List <UrlRule> rules, UrlRule newrule)
        {
            if (newrule == null)
            {
                return;
            }
            //var found = _rules.Any(rule => (articleRule.Url == rule.Url && articleRule.TabId == rule.TabId && articleRule.Parameters == rule.Parameters));
            var found = rules.Any(rule => (newrule.Url == rule.Url && newrule.TabId == rule.TabId && newrule.Parameters == rule.Parameters));

            if (!found)
            {
                rules.Add(newrule);
            }
        }
Esempio n. 10
0
        public void EvaluateShouldReturnSuccessForNullOrEmpty()
        {
            // arrange
            string value = null;
            var rule = new UrlRule();
            var property = new Property<string>( "Url", value );
            var expected = ValidationResult.Success;

            // act
            var actual = rule.Evaluate( property );

            // assert
            Assert.Equal( expected, actual );
        }
Esempio n. 11
0
        private UrlRule GetArticleRule(DNNArticleInfo article, ModuleInfo sourcemodule, List <string> urlTemplates, List <UrlRule> rules)
        {
            var viewmoduleTabid = int.Parse(sourcemodule.ModuleSettings["ViewTab"].ToString());
            var urlcandidate    = "";

            ////do we already have a rule for this article on this tab?
            if (rules.Any(urlRule => (urlRule.TabId == viewmoduleTabid && urlRule.Parameters == "ArticleId=" + article.ItemId)))
            {
                return(null);
            }

            var a = "";

            if (article.ItemId == 1379 || article.ItemId == 1480)
            {
                a = "stop";
            }

            Dictionary <string, string> fieldlist = LoadTokenValues(urlTemplates, article);

            //try different template suggestions to find a valid and unique friendlyUrl
            foreach (string urlTemplate in urlTemplates)
            {
                if (MakeUrl(out urlcandidate, viewmoduleTabid, urlTemplate, fieldlist, rules))
                {
                    break;
                }
            }

            //if no unique Url can be created then we don't make a new rule
            if (string.IsNullOrEmpty(urlcandidate))
            {
                return(null);
            }

            var rule = new UrlRule
            {
                CultureCode = sourcemodule.CultureCode,
                TabId       = viewmoduleTabid, // module.TabID,
                RuleType    = UrlRuleType.Module,
                Parameters  = "ArticleId=" + article.ItemId,
                Action      = UrlRuleAction.Rewrite,
                Url         = urlcandidate,
                RemoveTab   = !_includePageName
            };

            return(rule);
        }
Esempio n. 12
0
        public UrlRule GetCustomModuleRule(string CultureCode, int TabId, string Url)
        {
            UrlRule rule = null;
            IEnumerable <UrlRule> rules;

            if (TabId == Null.NullInteger)
            {
                rules = _rules.Where(r => r.RuleType == UrlRuleType.Custom && r.Action == UrlRuleAction.Rewrite && r.IsMatchUrl(Url) && r.RemoveTab == true);
            }
            else
            {
                rules = _rules.Where(r => r.RuleType == UrlRuleType.Custom && r.Action == UrlRuleAction.Rewrite && r.IsMatchUrl(Url));
            }

            if (TabId != Null.NullInteger)
            {
                //with tabid
                var tabRules = rules.Where(r => r.TabId == TabId);
                rule = GetFirstRule(tabRules, CultureCode);
            }
            else
            {
                rule = GetFirstRule(rules, CultureCode);
            }
            //without tabid
            if (rule == null)
            {
                var tabRules = rules.Where(r => r.TabId <= 0);
                rule = GetFirstRule(tabRules, CultureCode);
            }

            /*
             * if (rule == null)
             * {
             *  // redirection rule from Rewrite rule RedirectDestination
             *  rule = GetRedirectCustomModuleRule(CultureCode, TabId, Url);
             * }
             */
            return(rule);
        }
Esempio n. 13
0
        /*
         * private IEnumerable<UrlRule> GetRules(int portalId)
         * {
         *  if (portalId < 0) // host menu
         *      return new List<UrlRule>();
         *  else
         *      return UrlRuleConfiguration.GenerateConfig(portalId).Rules;
         * }
         */
        /*
         * private  IEnumerable<UrlRule> GetRules(int portalId, string CultureCode)
         * {
         *  if (CultureCode == "") CultureCode = null;
         *  return GetRules(portalId).Where(r => string.Equals(r.CultureCode,CultureCode, StringComparison.OrdinalIgnoreCase));
         * }
         */
        private UrlRule GetFirstRule(IEnumerable <UrlRule> rules, string CultureCode)
        {
            UrlRule rule = null;

            if (CultureCode == "")
            {
                CultureCode = null;
            }
            if (CultureCode == null)
            {
                rule = rules.FirstOrDefault(r => string.IsNullOrEmpty(r.CultureCode));
            }
            else
            {
                rule = rules.FirstOrDefault(r => string.Equals(r.CultureCode, CultureCode, StringComparison.OrdinalIgnoreCase));
                if (rule == null)
                {
                    rule = rules.FirstOrDefault(r => string.IsNullOrEmpty(r.CultureCode));
                }
            }
            return(rule);
        }
Esempio n. 14
0
        public UrlRule GetModuleRule(string CultureCode, int TabId, string Url)
        {
            UrlRule rule = null;
            IEnumerable <UrlRule> rules;

            if (TabId == Null.NullInteger)
            {
                rules = _rules.Where(r => r.RuleType == UrlRuleType.Module && r.Url == Url && r.RemoveTab == true);
            }
            else
            {
                rules = _rules.Where(r => r.RuleType == UrlRuleType.Module && r.Url == Url);
            }

            if (TabId != Null.NullInteger)
            {
                //with tabid
                var tabRules = rules.Where(r => r.TabId == TabId);
                rule = GetFirstRule(tabRules, CultureCode);
            }
            else
            {
                rule = GetFirstRule(rules, CultureCode);
            }
            //without tabid
            if (rule == null)
            {
                var tabRules = rules.Where(r => r.TabId == 0); // added 7/2/2014
                rule = GetFirstRule(tabRules, CultureCode);
            }
            if (rule == null)
            {
                // redirection rule from Rewrite rule RedirectDestination
                rule = GetRedirectModuleRule(CultureCode, TabId, Url);
            }
            return(rule);
        }
Esempio n. 15
0
        public void EvaluateWithKindShouldReturnExpectedResultForValidValue()
        {
            // arrange
            var rule = new UrlRule( UriKind.Relative );
            var property = new Property<string>( "Url", "/api/helloworld" );
            var expected = ValidationResult.Success;

            // act
            var actual = rule.Evaluate( property );

            // assert
            Assert.Equal( expected, actual );
        }
Esempio n. 16
0
        public void EvaluateShouldReturnExpectedResultForValidValue()
        {
            // arrange
            var rule = new UrlRule();
            var property = new Property<string>( "Url", "http://tempuri.org" );
            var expected = ValidationResult.Success;

            // act
            var actual = rule.Evaluate( property );

            // assert
            Assert.Equal( expected, actual );
        }
Esempio n. 17
0
        // redirection rule from Rewrite rule RedirectDestination
        private UrlRule GetRedirectModuleRule(string CultureCode, int TabId, string Url)
        {
            Url = Url.ToLower();
            UrlRule rule      = null;
            bool    RemoveTab = TabId == Null.NullInteger;
            var     rules     = _rules.Where(r => r.RuleType == UrlRuleType.Module && r.RedirectDestination == Url && r.Action == UrlRuleAction.Rewrite /*&& r.RemoveTab == RemoveTab*/);

            //with tabid
            if (TabId != Null.NullInteger)
            {
                var tabRules = rules.Where(r => r.TabId == TabId);
                rule = GetFirstRule(tabRules, CultureCode);
            }
            //without tabid
            //if (rule == null) 22/3/2016
            else
            {
                rule = GetFirstRule(rules, CultureCode);
            }
            if (rule != null)
            {
                rule = new UrlRule()
                {
                    CultureCode         = rule.CultureCode,
                    TabId               = rule.TabId,
                    RuleType            = rule.RuleType,
                    Action              = UrlRuleAction.Redirect,
                    Url                 = rule.RedirectDestination,
                    RedirectDestination = rule.Url,
                    RemoveTab           = rule.RemoveTab
                };
            }
            if (rule == null)
            {
                // try to find a rule with de begin of url match a rule RedirectDestination
                rules = _rules.Where(r => r.RuleType == UrlRuleType.Module && Url.StartsWith(r.RedirectDestination + "/") && r.Action == UrlRuleAction.Rewrite /*&& r.RemoveTab == RemoveTab*/);
                //with tabid
                if (TabId != Null.NullInteger)
                {
                    var tabRules = rules.Where(r => r.TabId == TabId);
                    rule = GetFirstRule(tabRules, CultureCode);
                }
                //without tabid
                //if (rule == null) 22/3/2016
                else
                {
                    rule = GetFirstRule(rules, CultureCode);
                }
                if (rule != null)
                {
                    rule = new UrlRule()
                    {
                        CultureCode         = rule.CultureCode,
                        TabId               = rule.TabId,
                        RuleType            = rule.RuleType,
                        Action              = UrlRuleAction.Redirect,
                        Url                 = rule.RedirectDestination,
                        RedirectDestination = rule.Url,
                        RemoveTab           = rule.RemoveTab
                    };
                }
            }
            return(rule);
        }
Esempio n. 18
0
        public static UrlRuleConfiguration GenerateConfig(int portalId)
        {
            //string cacheKey = "UrlRuleConfig" + portalId;


            var config = new UrlRuleConfiguration();

            config.Rules = new List <UrlRule>();

            var UltimaUrlRule     = new UrlRule();
            var UltimaUrlRuleInfo = new UrlRuleInfo();
            var routine           = new int();
            var conta             = new int();

            try
            {
                // 1 cache by portal
                //Logger.Trace("Get cache " + portalId );
                //config = (UrlRuleConfiguration)DataCache.GetCache(cacheKey);

                //if ((config == null))
                {
                    Stopwatch timer = new Stopwatch();
                    timer.Start();
                    Logger.Info("Rebuild cache start " + portalId + " at " + DateTime.Now);

                    //config = new UrlRuleConfiguration { Rules = new List<UrlRule>() };

                    // generate admin page
                    GenerateAdminTab(portalId);
                    //if (false)
                    {
                        var builder = new UrlBuilder();
                        var Rules   = builder.BuildUrlMap(portalId);
                        config.Rules.AddRange(Rules);



                        var storedRules = UrlRuleController.GetUrlRules(portalId);
                        foreach (UrlRuleInfo storedRule in storedRules)
                        {
                            routine           = 1;
                            UltimaUrlRuleInfo = storedRule;

                            if (storedRule.CultureCode == "")
                            {
                                storedRule.CultureCode = null;
                            }
                            if (storedRule.RedirectDestination == "")
                            {
                                storedRule.RedirectDestination = null;
                            }
                            if (storedRule.RedirectDestination != null)
                            {
                                storedRule.RedirectDestination = storedRule.RedirectDestination.Trim();
                            }
                            if (storedRule.Url != null)
                            {
                                storedRule.Url = storedRule.Url.Trim();
                            }
                        }

                        // add custom rules to cache
                        foreach (UrlRuleInfo storedRule in storedRules.Where(r => r.RuleType == (int)UrlRuleType.Custom /* && r.RuleAction == (int)UrlRuleAction.Redirect */)) // custom rule
                        {
                            routine           = 2;
                            UltimaUrlRuleInfo = storedRule;

                            UrlRule rule = new UrlRule()
                            {
                                RuleType            = (UrlRuleType)storedRule.RuleType,
                                CultureCode         = storedRule.CultureCode,
                                TabId               = storedRule.TabId,
                                Parameters          = storedRule.Parameters,
                                Action              = (UrlRuleAction)storedRule.RuleAction,
                                RemoveTab           = storedRule.RemoveTab,
                                RedirectDestination = storedRule.RedirectDestination,
                                RedirectStatus      = storedRule.RedirectStatus,
                                Url = storedRule.Url
                            };
                            config.Rules.Add(rule);
                        }

                        // add rule for sitemap.xml rewrite to sitemap.aspx

                        /* replaced by a handler
                         * UrlRule sitemapRule = new UrlRule()
                         * {
                         *  RuleType = UrlRuleType.Custom,
                         *  Action = UrlRuleAction.Rewrite,
                         *  RedirectDestination = "~/Sitemap.aspx",
                         *  Url = ".*sitemap.xml"
                         * };
                         * config.Rules.Add(sitemapRule);
                         */
                        foreach (UrlRule rule in config.Rules)
                        {
                            routine       = 3;
                            UltimaUrlRule = rule;

                            if (rule.CultureCode == "")
                            {
                                rule.CultureCode = null;
                            }
                            if (rule.RedirectDestination == "")
                            {
                                rule.RedirectDestination = null;
                            }
                            rule.Url = rule.Url.ToLower();
                            // set RedirectDestination for automatic redirections corresponding to rewrite rule
                            if (rule.RuleType == UrlRuleType.Module && rule.Action == UrlRuleAction.Rewrite && string.IsNullOrEmpty(rule.RedirectDestination))
                            {
                                rule.RedirectDestination = rule.Parameters.Replace('=', '/').Replace('&', '/');
                            }
                            else if (rule.RuleType == UrlRuleType.Module && rule.Action == UrlRuleAction.Redirect && string.IsNullOrEmpty(rule.RedirectDestination))
                            {
                                var rewriteRule = config.Rules.FirstOrDefault(r => r.RuleType == UrlRuleType.Module && r.Parameters == rule.Parameters && r.Action == UrlRuleAction.Rewrite);
                                if (rewriteRule != null)
                                {
                                    rule.RedirectDestination = rewriteRule.Url;
                                }
                            }
                            if (rule.RedirectDestination != null)
                            {
                                rule.RedirectDestination = rule.RedirectDestination.ToLower();
                            }
                        }

                        var OldRules = new List <UrlRuleInfo>(storedRules);

                        var DistuctRules = config.Rules.Where(r => r.RuleType != UrlRuleType.Custom)
                                           .GroupBy(r => new { r.RuleType, r.CultureCode, r.TabId, r.Url })
                                           .Select(g => g.First());


                        conta = 0;
                        foreach (UrlRule rule in DistuctRules)
                        {
                            routine       = 4;
                            UltimaUrlRule = rule;
                            conta         = conta + 1;



                            var ruleInfoLst = storedRules.Where(r => r.RuleType == (int)rule.RuleType &&
                                                                r.CultureCode == rule.CultureCode &&
                                                                r.TabId == rule.TabId &&
                                                                r.Url == rule.Url);

                            UrlRuleInfo ruleInfo = ruleInfoLst.FirstOrDefault();
                            if (ruleInfo == null)
                            {
                                if (!string.IsNullOrEmpty(rule.Url) && rule.Url.Length < 500)
                                {
                                    ruleInfo = new UrlRuleInfo()
                                    {
                                        PortalId    = portalId,
                                        DateTime    = DateTime.Now,
                                        RuleType    = (int)rule.RuleType,
                                        CultureCode = rule.CultureCode,
                                        TabId       = rule.TabId,
                                        Url         = rule.Url,

                                        Parameters          = rule.Parameters,
                                        RuleAction          = (int)rule.Action,
                                        RemoveTab           = rule.RemoveTab,
                                        RedirectDestination = rule.RedirectDestination,
                                        RedirectStatus      = rule.RedirectStatus
                                    };
                                    ruleInfo.UrlRuleId = UrlRuleController.AddUrlRule(ruleInfo);
                                    Logger.Info("AddUrlRule (UrlRuleId=" + ruleInfo.UrlRuleId + ")");
                                    storedRules.Add(ruleInfo);
                                }
                            }
                            else
                            {
                                bool FirstOne = true; // for auto correction of double stored rules
                                foreach (var r in ruleInfoLst)
                                {
                                    OldRules.Remove(r);
                                    if (FirstOne)
                                    {
                                        if (ruleInfo.Parameters != rule.Parameters ||
                                            ruleInfo.RuleAction != (int)rule.Action ||
                                            ruleInfo.RemoveTab != rule.RemoveTab ||
                                            ruleInfo.RedirectDestination != rule.RedirectDestination ||
                                            ruleInfo.RedirectStatus != rule.RedirectStatus)
                                        {
                                            Logger.Info("UpdateUrlRule (UrlRuleId=" + ruleInfo.UrlRuleId +

                                                        (ruleInfo.Parameters == rule.Parameters) + "/" +
                                                        (ruleInfo.RuleAction == (int)rule.Action) + "/" +
                                                        (ruleInfo.RemoveTab == rule.RemoveTab) + "/" +
                                                        (ruleInfo.RedirectDestination == rule.RedirectDestination) + "/" +
                                                        (ruleInfo.RedirectStatus == rule.RedirectStatus) + "-" +

                                                        ruleInfo.Parameters + "/" + rule.Parameters + "/" +
                                                        ruleInfo.RuleAction + "/" + (int)rule.Action + "/" +
                                                        ruleInfo.RemoveTab + "/" + rule.RemoveTab + "/" +
                                                        ruleInfo.RedirectDestination + "/" + rule.RedirectDestination + "/" +
                                                        ruleInfo.RedirectStatus + "/" + rule.RedirectStatus +

                                                        ")");

                                            ruleInfo.Parameters          = rule.Parameters;
                                            ruleInfo.RuleAction          = (int)rule.Action;
                                            ruleInfo.RemoveTab           = rule.RemoveTab;
                                            ruleInfo.RedirectDestination = rule.RedirectDestination;
                                            ruleInfo.RedirectStatus      = rule.RedirectStatus;
                                            UrlRuleController.UpdateUrlRule(ruleInfo);
                                        }
                                    }
                                    else
                                    {
                                        UrlRuleController.DeleteUrlRule(ruleInfo.UrlRuleId);
                                        Logger.Info("DeleteUrlRule (UrlRuleId=" + ruleInfo.UrlRuleId + ")");
                                    }

                                    FirstOne = false;
                                }
                            }
                        }

                        foreach (var storedRule in OldRules.Where(r => r.RuleType == (int)UrlRuleType.Tab ||
                                                                  r.RuleType == (int)UrlRuleType.Module))
                        {
                            routine           = 5;
                            UltimaUrlRuleInfo = storedRule;

                            if (storedRule.RuleAction == (int)UrlRuleAction.Rewrite)
                            {
                                var actualRule = Rules.FirstOrDefault(r => r.RuleType == (UrlRuleType)storedRule.RuleType &&
                                                                      r.CultureCode == storedRule.CultureCode &&
                                                                      r.TabId == storedRule.TabId &&
                                                                      r.Parameters == storedRule.Parameters);

                                if (actualRule != null)
                                {
                                    UrlRule rule = new UrlRule()
                                    {
                                        RuleType            = (UrlRuleType)storedRule.RuleType,
                                        CultureCode         = storedRule.CultureCode,
                                        TabId               = storedRule.TabId,
                                        Parameters          = storedRule.Parameters,
                                        Action              = UrlRuleAction.Redirect,
                                        RemoveTab           = storedRule.RemoveTab,
                                        RedirectDestination = actualRule.Url,
                                        RedirectStatus      = storedRule.RedirectStatus,
                                        Url = storedRule.Url
                                    };
                                    config.Rules.Add(rule);
                                }
                            }
                        }
                    }
                    //Logger.MethodExit();
                    //DataCache.SetCache("UrlRuleConfig", config, TimeSpan.FromDays(1));
                    //int intCacheTimeout = 20 * Convert.ToInt32(DotNetNuke.Entities.Host.Host.PerformanceSetting);

                    timer.Stop();
                    double responseTime = timer.ElapsedMilliseconds / 1000.0;



                    Logger.Info("Rebuild cache end " + portalId + " (" + responseTime + ")" + " at " + DateTime.Now);
                    //DataCache.SetCache(cacheKey, config, TimeSpan.FromMinutes(intCacheTimeout));

                    //var onRemove = new CacheItemRemovedCallback(config.RemovedCallBack);

                    //DateTime absoluteExpiration = DateTime.UtcNow.Add(TimeSpan.FromMinutes(intCacheTimeout));

                    //DataCache.SetCache(cacheKey, config, null, absoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.AboveNormal, onRemove, false);
                }
            }
            catch (Exception ex)
            {
                //log it
                var objEventLog     = new EventLogController();
                var objEventLogInfo = new LogInfo()
                {
                    LogTypeKey = "GENERAL_EXCEPTION"
                };
                objEventLogInfo.AddProperty("UrlRewriter.UrlRuleConfig", "GetConfig Failed");
                objEventLogInfo.AddProperty("UrlRewriter.RedirectDestination", UltimaUrlRule.RedirectDestination);
                objEventLogInfo.AddProperty("UrlRewriter.UrlRule", UltimaUrlRule.Url);
                objEventLogInfo.AddProperty("UrlRewriter.UrlRuleConfig", "GetConfig Failed");
                objEventLogInfo.AddProperty("ExceptionMessage", ex.Message);
                objEventLogInfo.AddProperty("PortalId", portalId.ToString());
                //objEventLogInfo.LogTypeKey = EventLogController.EventLogType.HOST_ALERT.ToString();


                objEventLogInfo.AddProperty("Exception Type", ex.GetType().ToString());
                objEventLogInfo.AddProperty("Message", ex.Message);
                objEventLogInfo.AddProperty("Stack Trace", ex.StackTrace);
                if (ex.InnerException != null)
                {
                    objEventLogInfo.AddProperty("Inner Exception Message", ex.InnerException.Message);
                    objEventLogInfo.AddProperty("Inner Exception Stacktrace", ex.InnerException.StackTrace);
                }
                objEventLogInfo.BypassBuffering = true;

                objEventLog.AddLog(objEventLogInfo);
                Logger.Error(ex);
                //DataCache.SetCache(cacheKey, config, TimeSpan.FromMinutes(60));
            }


            return(config);
        }
Esempio n. 19
0
        /// <summary>
        /// 验证输入是URL
        /// </summary>
        /// <param name="box">验证框</param>
        /// <returns></returns>
        public static ValidBox Url(this ValidBox box)
        {
            var newBox = new UrlRule().ToValidBox();

            return(ValidBox.Merge(box, newBox));
        }