/// <summary> /// Processses the Umbraco Request /// </summary> /// <param name="httpContext"></param> void ProcessRequest(HttpContextBase httpContext) { // do not process if client-side request if (httpContext.Request.Url.IsClientSideRequest()) return; if (UmbracoContext.Current == null) throw new InvalidOperationException("The UmbracoContext.Current is null, ProcessRequest cannot proceed unless there is a current UmbracoContext"); if (UmbracoContext.Current.RoutingContext == null) throw new InvalidOperationException("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 var isRoutableAttempt = EnsureUmbracoRoutablePage(umbracoContext, httpContext); //raise event here OnRouteAttempt(new RoutableAttemptEventArgs(isRoutableAttempt.Result, umbracoContext, httpContext)); if (!isRoutableAttempt.Success) { return; } httpContext.Trace.Write("UmbracoModule", "Umbraco request confirmed"); // ok, process // note: requestModule.UmbracoRewrite also did some stripping of &umbPage // from the querystring... that was in v3.x to fix some issues with pre-forms // auth. Paul Sterling confirmed in jan. 2013 that we can get rid of it. // instanciate, prepare and process the published content request // important to use CleanedUmbracoUrl - lowercase path-only version of the current url var pcr = new PublishedContentRequest(umbracoContext.CleanedUmbracoUrl, umbracoContext.RoutingContext); umbracoContext.PublishedContentRequest = pcr; pcr.Prepare(); // HandleHttpResponseStatus returns a value indicating that the request should // not be processed any further, eg because it has been redirect. then, exit. if (HandleHttpResponseStatus(httpContext, pcr)) return; if (!pcr.HasPublishedContent) httpContext.RemapHandler(new PublishedContentNotFoundHandler()); else RewriteToUmbracoHandler(httpContext, pcr); }