private void OnEnter(object sender, EventArgs e) { HttpContext httpContext = (sender as HttpApplication).Context; var request = httpContext.Request; SnTrace.Web.Write("PCM.OnEnter {0} {1}", request.RequestType, request.Url); // check if messages to process from msmq exceeds configured limit: delay current thread until it goes back to normal levels DelayCurrentRequestIfNecessary(); var initInfo = PortalContext.CreateInitInfo(httpContext); // Check for forbidden paths (custom request filtering), mainly for phisycal folders in the web folder. // The built-in Request filtering module is not capable of filtering folders only in the root, but let // us have folders with the same name somewhere else in the Content Repository. if (IsForbiddenFolder(initInfo)) { AuthenticationHelper.ThrowNotFound(); } // check if request came to a restricted site via another site if (Configuration.WebApplication.DenyCrossSiteAccessEnabled) { if (initInfo.RequestedNodeSite != null && initInfo.RequestedSite != null) { if (initInfo.RequestedNodeSite.DenyCrossSiteAccess && initInfo.RequestedSite.Id != initInfo.RequestedNodeSite.Id) { HttpContext.Current.Response.StatusCode = 404; HttpContext.Current.Response.Flush(); HttpContext.Current.Response.End(); return; } } } // add cache-control headers and handle ismodifiedsince requests HandleResponseForClientCache(initInfo); PortalContext portalContext = PortalContext.Create(httpContext, initInfo); var action = HttpActionManager.CreateAction(portalContext); SnTrace.Web.Write("HTTP Action." + GetLoggedProperties(portalContext)); action.Execute(); }