Beispiel #1
0
        /// <summary>
        /// Processses the Umbraco Request
        /// </summary>
        /// <param name="httpContext"></param>
        void ProcessRequest(HttpContextBase httpContext)
        {
            // do not process if client-side request
            if (IsClientSideRequest(httpContext.Request.Url))
            {
                return;
            }

            if (UmbracoContext.Current == null)
            {
                throw new NullReferenceException("The UmbracoContext.Current is null, ProcessRequest cannot proceed unless there is a current UmbracoContext");
            }
            if (UmbracoContext.Current.RoutingContext == null)
            {
                throw new NullReferenceException("The UmbracoContext.RoutingContext has not been assigned, ProcessRequest cannot proceed unless there is a RoutingContext assigned to the UmbracoContext");
            }

            var umbracoContext = UmbracoContext.Current;

            // do not process but remap to handler if it is a base rest request
            if (BaseRest.BaseRestHandler.IsBaseRestRequest(umbracoContext.OriginalRequestUrl))
            {
                httpContext.RemapHandler(new BaseRest.BaseRestHandler());
                return;
            }

            // do not process if this request is not a front-end routable page
            if (!EnsureUmbracoRoutablePage(umbracoContext, httpContext))
            {
                return;
            }

            httpContext.Trace.Write("UmbracoModule", "Umbraco request confirmed");

            // ok, process

            var uri = umbracoContext.OriginalRequestUrl;

            // legacy - no idea what this is but does something with the query strings
            LegacyCleanUmbPageFromQueryString(ref uri);

            // instanciate a request a process
            // important to use CleanedUmbracoUrl - lowercase path-only version of the current url
            var docreq = new PublishedContentRequest(umbracoContext.CleanedUmbracoUrl, umbracoContext.RoutingContext);

            docreq.ProcessRequest(httpContext, umbracoContext,
                                  docreq2 => RewriteToUmbracoHandler(HttpContext.Current, uri.Query, docreq2.RenderingEngine));
        }