/// <summary> /// Creates a new Umbraco context. /// </summary> /// <param name="httpContext"></param> /// <param name="applicationContext"> </param> /// <param name="publishedCaches">The published caches.</param> /// <param name="webSecurity"></param> /// <param name="preview">An optional value overriding detection of preview mode.</param> internal UmbracoContext( HttpContextBase httpContext, ApplicationContext applicationContext, IPublishedCaches publishedCaches, WebSecurity webSecurity, bool?preview = null) : this(httpContext, applicationContext, new Lazy <IPublishedCaches>(() => publishedCaches), webSecurity, preview) { }
/// <summary> /// Creates a new Umbraco context. /// </summary> /// <param name="httpContext"></param> /// <param name="applicationContext"> </param> /// <param name="publishedCaches">The published caches.</param> /// <param name="preview">An optional value overriding detection of preview mode.</param> internal UmbracoContext( HttpContextBase httpContext, ApplicationContext applicationContext, IPublishedCaches publishedCaches, bool?preview = null) { if (httpContext == null) { throw new ArgumentNullException("httpContext"); } if (applicationContext == null) { throw new ArgumentNullException("applicationContext"); } ObjectCreated = DateTime.Now; UmbracoRequestId = Guid.NewGuid(); HttpContext = httpContext; Application = applicationContext; Security = new WebSecurity(); ContentCache = publishedCaches.CreateContextualContentCache(this); MediaCache = publishedCaches.CreateContextualMediaCache(this); InPreviewMode = preview ?? DetectInPreviewModeFromRequest(); // set the urls... //original request url //NOTE: The request will not be available during app startup so we can only set this to an absolute URL of localhost, this // is a work around to being able to access the UmbracoContext during application startup and this will also ensure that people // 'could' still generate URLs during startup BUT any domain driven URL generation will not work because it is NOT possible to get // the current domain during application startup. // see: http://issues.umbraco.org/issue/U4-1890 var requestUrl = new Uri("http://localhost"); var request = GetRequestFromContext(); if (request != null) { requestUrl = request.Url; } this.OriginalRequestUrl = requestUrl; //cleaned request url this.CleanedUmbracoUrl = UriUtility.UriToUmbraco(this.OriginalRequestUrl); }
/// <summary> /// Creates a new Umbraco context. /// </summary> /// <param name="httpContext"></param> /// <param name="applicationContext"> </param> /// <param name="publishedCaches">The published caches.</param> /// <param name="webSecurity"></param> /// <param name="preview">An optional value overriding detection of preview mode.</param> internal UmbracoContext( HttpContextBase httpContext, ApplicationContext applicationContext, IPublishedCaches publishedCaches, WebSecurity webSecurity, bool? preview = null) { //This ensures the dispose method is called when the request terminates, though // we also ensure this happens in the Umbraco module because the UmbracoContext is added to the // http context items. httpContext.DisposeOnPipelineCompleted(this); if (httpContext == null) throw new ArgumentNullException("httpContext"); if (applicationContext == null) throw new ArgumentNullException("applicationContext"); ObjectCreated = DateTime.Now; UmbracoRequestId = Guid.NewGuid(); HttpContext = httpContext; Application = applicationContext; Security = webSecurity; ContentCache = publishedCaches.CreateContextualContentCache(this); MediaCache = publishedCaches.CreateContextualMediaCache(this); _previewing = preview; // set the urls... //original request url //NOTE: The request will not be available during app startup so we can only set this to an absolute URL of localhost, this // is a work around to being able to access the UmbracoContext during application startup and this will also ensure that people // 'could' still generate URLs during startup BUT any domain driven URL generation will not work because it is NOT possible to get // the current domain during application startup. // see: http://issues.umbraco.org/issue/U4-1890 var requestUrl = new Uri("http://localhost"); var request = GetRequestFromContext(); if (request != null) { requestUrl = request.Url; } this.OriginalRequestUrl = requestUrl; //cleaned request url this.CleanedUmbracoUrl = UriUtility.UriToUmbraco(this.OriginalRequestUrl); }