Beispiel #1
0
        private void ProcessFeatureRedirection(HttpContext httpContext, HttpRequest request)
        {
            string text = request.QueryString["ftr"];

            if (!text.IsNullOrBlank())
            {
                try
                {
                    EcpFeature           ecpFeature        = (EcpFeature)Enum.Parse(typeof(EcpFeature), text, true);
                    string               text2             = "ftr=" + text;
                    int                  num               = request.Url.Query.IndexOf(text2, StringComparison.InvariantCultureIgnoreCase);
                    string               text3             = request.Url.Query.Substring(0, num) + request.Url.Query.Substring(num + text2.Length);
                    EcpFeatureDescriptor featureDescriptor = ecpFeature.GetFeatureDescriptor();
                    string               query             = featureDescriptor.AbsoluteUrl.Query;
                    text3 = ((text3.Length > 1 && !string.IsNullOrEmpty(query) && query.Contains("?")) ? ("&" + text3.Substring(1)) : ((text3 == "?") ? string.Empty : text3));
                    string text4 = (featureDescriptor.UseAbsoluteUrl ? featureDescriptor.AbsoluteUrl.ToEscapedString() : (request.Url.LocalPath + query)) + text3;
                    Uri    uri   = new Uri(text4);
                    NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(uri.Query);
                    StringBuilder       stringBuilder       = new StringBuilder();
                    foreach (object obj in nameValueCollection)
                    {
                        string text5 = (string)obj;
                        if (!string.IsNullOrEmpty(text5))
                        {
                            stringBuilder.AppendFormat("{0}={1}&", text5, nameValueCollection[text5].Split(new char[]
                            {
                                ','
                            })[0]);
                        }
                    }
                    text4 = text4.Replace(uri.Query, "?" + stringBuilder.ToString().TrimEnd(new char[]
                    {
                        '&'
                    }));
                    ExTraceGlobals.RedirectTracer.TraceInformation <string>(0, 0L, "[RequestFilterModule::ProcessFeatureRedirection] Redirect to {0}).", text4);
                    httpContext.Response.Redirect(text4);
                }
                catch (ArgumentException innerException)
                {
                    throw new BadQueryParameterException("ftr", innerException);
                }
            }
        }
 private static void Register(this EcpFeatureDescriptor feature)
 {
     EcpFeatureExtension.ecpFeatures.Add(feature.Id, feature);
 }