/// <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; // 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)); }