Beispiel #1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            using (new SecurityDisabler())
            {
                var urlRewriter = new InboundRewriter(Request.ServerVariables, Request.Headers);

                var db = Sitecore.Data.Database.GetDatabase(Context.Items["urlrewrite:db"] as string);
                var requestResult = Context.Items["urlrewrite:result"] as ProcessInboundRulesResult;

                if (requestResult != null)
                {
                    //TODO: Curently this only reflects the result of Redirect Actions - make this call to logging reflect all action types
                    Hi.UrlRewrite.Log.Info(this, db, "Redirecting {0} to {1} [{2}]", requestResult.OriginalUri, requestResult.RewrittenUri,
                        requestResult.StatusCode);

                    urlRewriter.ExecuteResult(new HttpContextWrapper(Context), requestResult);
                }
            }
        }
        public override void Process(HttpRequestArgs args)
        {
            var db = Sitecore.Context.Database;

            try
            {

                if (args.Context == null || db == null) return;

                var httpContext = new HttpContextWrapper(args.Context);
                var requestUri = httpContext.Request.Url;

                if (requestUri == null || Configuration.IgnoreUrlPrefixes.Length > 0 && Configuration.IgnoreUrlPrefixes.Any(prefix => requestUri.PathAndQuery.StartsWith(prefix, StringComparison.InvariantCultureIgnoreCase)))
                {
                    return;
                }

                var urlRewriter = new InboundRewriter(httpContext.Request.ServerVariables, httpContext.Request.Headers);
                var requestResult = ProcessUri(requestUri, db, urlRewriter);

                if (requestResult == null || !requestResult.MatchedAtLeastOneRule) return;

                //TODO: Curently this only reflects the result of Redirect Actions - make this call to logging reflect all action types
                Log.Info(this, db, "Redirecting {0} to {1} [{2}]", requestResult.OriginalUri, requestResult.RewrittenUri,
                    requestResult.StatusCode);

                urlRewriter.ExecuteResult(httpContext, requestResult);
            }
            catch (ThreadAbortException)
            {
                // swallow this exception because we may have called Response.End
            }
            catch (Exception ex)
            {
                if (ex is ThreadAbortException) return;

                Log.Error(this, ex, db, "Exception occured");
            }
        }
        private static void HandleSpecialExtensions(HttpContextWrapper context, ProcessInboundRulesResult result)
        {
            var inboundRewriter = new InboundRewriter();

            inboundRewriter.ExecuteResult(context, result, false);
        }