GetModuleRule() публичный Метод

public GetModuleRule ( string CultureCode, int TabId, string Url ) : Satrabel.HttpModules.Provider.UrlRule
CultureCode string
TabId int
Url string
Результат Satrabel.HttpModules.Provider.UrlRule
        private static void ProcessParameters(CacheController cacheCtrl, RewriterAction action, int PortalId)
        {
            if ((action.ModuleUrl.Trim().Length > 0))
            {
                //split the value into an array based on "/" ( ie. /tabid/##/ )
                string parameters = action.ModuleUrl.Replace("\\", "/").TrimStart('/');
                var rule = cacheCtrl.GetModuleRule(action.CultureCode, action.TabId, parameters);

                if (rule == null)
                {
                    rule = cacheCtrl.GetCustomModuleRule(action.CultureCode, action.TabId, parameters);
                    if (rule != null)
                    {
                        if (rule.Action == UrlRuleAction.Redirect)
                        {
                            if (rule.RemoveTab)
                            {
                                action.RedirectPage = "";
                            }
                            action.RedirectModule = rule.ReplaceRedirectDestination(parameters);
                            action.DoRedirect = true;
                            action.Raison += "+ModuleRule:" + parameters + ">" + action.RedirectModule;
                        }
                        else
                        {
                            action.ModuleParameters = rule.ReplaceUrl(parameters);
                            action.WorkUrl = "";
                        }
                        return;
                    }
                }

                if (rule != null)
                {
                    if (rule.Action == UrlRuleAction.Redirect)
                    {
                        if (rule.RemoveTab)
                        {
                            //action.RedirectUrl = redirect.RedirectUrl.Replace("/" + tabUrl, "");
                            action.RedirectPage = "";
                        }
                        //action.RedirectUrl = redirect.RedirectUrl.Replace(parameters.TrimStart('/'), rule.RedirectDestination);
                        action.RedirectModule = rule.RedirectDestination;
                        action.DoRedirect = true;
                        action.Raison += "+ModuleRule:" + rule.Url + ">" + rule.RedirectDestination;

                    }
                    else if (parameters != rule.Url) // because different case
                    {
                        action.RedirectPage = rule.Url;
                        action.DoRedirect = true;
                        action.Raison += "+Wrong case or url";
                    }
                    action.ModuleParameters = rule.Parameters;
                    action.WorkUrl = "";
                    return;
                }
                else
                {
                    //if (!HttpContext.Current.Request.IsAuthenticated)
                    if (UrlRewiterSettings.IsManage404(PortalId))
                    {
                        action.ModuleNotFound = true;
                    }
                }
                action.QueryParameters = "";
                string[] splitParameters = parameters.Split('/');
                string parameterName;
                string parameterValue;
                //create a well formed querystring based on the array of parameters
                for (int parameterIndex = 0; parameterIndex < splitParameters.Length; parameterIndex++)
                {
                    //ignore the page name
                    if (splitParameters[parameterIndex].IndexOf(".aspx", StringComparison.InvariantCultureIgnoreCase) == -1)
                    {
                        //get parameter name
                        parameterName = splitParameters[parameterIndex].Trim();
                        if (parameterName.Length > 0)
                        {
                            //rule = GetModuleRule(portalId, CultureCode, TabId, parameterName);
                            rule = null;

                            //add parameter to SendTo if it does not exist already  && not pagename
                            if (action.QueryParameters.IndexOf("?" + parameterName + "=", StringComparison.InvariantCultureIgnoreCase) == -1 &&
                                action.QueryParameters.IndexOf("&" + parameterName + "=", StringComparison.InvariantCultureIgnoreCase) == -1 &&
                                (parameterIndex != splitParameters.Length - 1 || rule != null))
                            {
                                //get parameter value
                                parameterValue = "";
                                if (rule != null)
                                {
                                    action.QueryParameters += "&" + rule.Parameters;
                                }
                                else
                                {
                                    action.QueryParameters += "&" + parameterName;
                                    if (parameterIndex < splitParameters.Length - 1)
                                    {
                                        parameterIndex += 1;
                                        if (!String.IsNullOrEmpty(splitParameters[parameterIndex].Trim()))
                                        {
                                            parameterValue = splitParameters[parameterIndex].Trim();
                                            parameterValue = parameterValue.Replace(".aspx", "");

                                        }
                                    }
                                    //add the parameter value
                                    if (parameterValue.Length > 0)
                                    {
                                        action.QueryParameters += "=" + parameterValue;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        private static int ProcessParametersWithoutPage(CacheController cacheCtrl, RewriterAction action)
        {
            if ((action.WorkUrl.Trim().Length > 0))
            {
                //split the value into an array based on "/" ( ie. /tabid/##/ )
                string parameters = action.WorkUrl.Replace("\\", "/").TrimStart('/');
                var rule = cacheCtrl.GetModuleRule(action.CultureCode, parameters);
                if (rule != null)
                {
                    if (rule.Action == UrlRuleAction.Redirect)
                    {
                        /*
                        if (rule.RemoveTab)
                        {
                            redirect.RedirectUrl = redirect.RedirectUrl.Replace("/" + tabUrl, "");
                        }
                         */
                        //action.RedirectUrl = action.RedirectUrl.Replace(parameters.TrimStart('/'), rule.RedirectDestination);
                        action.RedirectModule = rule.RedirectDestination;
                        action.DoRedirect = true;
                        action.Raison += "+ModuleRule:" + rule.Url + ">" + rule.RedirectDestination;

                    }
                    if (rule.TabId != Null.NullInteger)
                    {
                        action.ModuleUrl = parameters;
                        action.ModuleParameters = rule.Parameters;
                        action.TabId = rule.TabId;
                        action.WorkUrl = "";
                    }
                }

            }
            return -1;
        }