diff --git a/src/Umbraco.Core/Routing/ContentFinderByIdPath.cs b/src/Umbraco.Core/Routing/ContentFinderByIdPath.cs
index 6e7238890f..380d7459ed 100644
--- a/src/Umbraco.Core/Routing/ContentFinderByIdPath.cs
+++ b/src/Umbraco.Core/Routing/ContentFinderByIdPath.cs
@@ -1,4 +1,5 @@
using System.Globalization;
+using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Umbraco.Cms.Core.Configuration.Models;
@@ -42,7 +43,7 @@ namespace Umbraco.Cms.Core.Routing
///
/// The PublishedRequest.
/// A value indicating whether an Umbraco document was found and assigned.
- public bool TryFindContent(IPublishedRequestBuilder frequest)
+ public async Task TryFindContent(IPublishedRequestBuilder frequest)
{
if(!_umbracoContextAccessor.TryGetUmbracoContext(out var umbracoContext))
{
@@ -70,7 +71,10 @@ namespace Umbraco.Cms.Core.Routing
if (nodeId > 0)
{
- _logger.LogDebug("Id={NodeId}", nodeId);
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug("Id={NodeId}", nodeId);
+ }
node = umbracoContext?.Content?.GetById(nodeId);
if (node != null)
@@ -86,7 +90,10 @@ namespace Umbraco.Cms.Core.Routing
}
frequest.SetPublishedContent(node);
- _logger.LogDebug("Found node with id={PublishedContentId}", node.Id);
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug("Found node with id={PublishedContentId}", node.Id);
+ }
}
else
{
@@ -97,7 +104,10 @@ namespace Umbraco.Cms.Core.Routing
if (nodeId == -1)
{
- _logger.LogDebug("Not a node id");
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug("Not a node id");
+ }
}
return node != null;
diff --git a/src/Umbraco.Core/Routing/ContentFinderByPageIdQuery.cs b/src/Umbraco.Core/Routing/ContentFinderByPageIdQuery.cs
index 95b9faef2a..646d091ebb 100644
--- a/src/Umbraco.Core/Routing/ContentFinderByPageIdQuery.cs
+++ b/src/Umbraco.Core/Routing/ContentFinderByPageIdQuery.cs
@@ -1,4 +1,5 @@
using System.Globalization;
+using System.Threading.Tasks;
using Umbraco.Cms.Core.Models.PublishedContent;
using Umbraco.Cms.Core.Web;
using Umbraco.Extensions;
@@ -27,7 +28,7 @@ namespace Umbraco.Cms.Core.Routing
}
///
- public bool TryFindContent(IPublishedRequestBuilder frequest)
+ public async Task TryFindContent(IPublishedRequestBuilder frequest)
{
if(!_umbracoContextAccessor.TryGetUmbracoContext(out var umbracoContext))
{
diff --git a/src/Umbraco.Core/Routing/ContentFinderByRedirectUrl.cs b/src/Umbraco.Core/Routing/ContentFinderByRedirectUrl.cs
index d1d4873d55..a200afec67 100644
--- a/src/Umbraco.Core/Routing/ContentFinderByRedirectUrl.cs
+++ b/src/Umbraco.Core/Routing/ContentFinderByRedirectUrl.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Models.PublishedContent;
@@ -43,7 +44,7 @@ namespace Umbraco.Cms.Core.Routing
/// The PublishedRequest.
/// A value indicating whether an Umbraco document was found and assigned.
/// Optionally, can also assign the template or anything else on the document request, although that is not required.
- public bool TryFindContent(IPublishedRequestBuilder frequest)
+ public async Task TryFindContent(IPublishedRequestBuilder frequest)
{
if (!_umbracoContextAccessor.TryGetUmbracoContext(out var umbracoContext))
{
@@ -58,7 +59,10 @@ namespace Umbraco.Cms.Core.Routing
if (redirectUrl == null)
{
- _logger.LogDebug("No match for route: {Route}", route);
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug("No match for route: {Route}", route);
+ }
return false;
}
@@ -66,14 +70,19 @@ namespace Umbraco.Cms.Core.Routing
var url = content == null ? "#" : content.Url(_publishedUrlProvider, redirectUrl.Culture);
if (url.StartsWith("#"))
{
- _logger.LogDebug("Route {Route} matches content {ContentId} which has no URL.", route, redirectUrl.ContentId);
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug("Route {Route} matches content {ContentId} which has no URL.", route, redirectUrl.ContentId);
+ }
return false;
}
// Appending any querystring from the incoming request to the redirect URL
url = string.IsNullOrEmpty(frequest.Uri.Query) ? url : url + frequest.Uri.Query;
-
- _logger.LogDebug("Route {Route} matches content {ContentId} with URL '{Url}', redirecting.", route, content?.Id, url);
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug("Route {Route} matches content {ContentId} with URL '{Url}', redirecting.", route, content?.Id, url);
+ }
frequest
.SetRedirectPermanent(url)
diff --git a/src/Umbraco.Core/Routing/ContentFinderByUrl.cs b/src/Umbraco.Core/Routing/ContentFinderByUrl.cs
index 3a753563df..e95a036215 100644
--- a/src/Umbraco.Core/Routing/ContentFinderByUrl.cs
+++ b/src/Umbraco.Core/Routing/ContentFinderByUrl.cs
@@ -1,3 +1,4 @@
+using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Umbraco.Cms.Core.Models.PublishedContent;
using Umbraco.Cms.Core.Web;
@@ -33,7 +34,7 @@ namespace Umbraco.Cms.Core.Routing
///
/// The PublishedRequest.
/// A value indicating whether an Umbraco document was found and assigned.
- public virtual bool TryFindContent(IPublishedRequestBuilder frequest)
+ public virtual async Task TryFindContent(IPublishedRequestBuilder frequest)
{
if (!UmbracoContextAccessor.TryGetUmbracoContext(out var umbracoContext))
{
@@ -69,18 +70,26 @@ namespace Umbraco.Cms.Core.Routing
{
throw new System.ArgumentNullException(nameof(docreq));
}
-
- _logger.LogDebug("Test route {Route}", route);
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug("Test route {Route}", route);
+ }
IPublishedContent? node = umbracoContext.Content?.GetByRoute(umbracoContext.InPreviewMode, route, culture: docreq.Culture);
if (node != null)
{
docreq.SetPublishedContent(node);
- _logger.LogDebug("Got content, id={NodeId}", node.Id);
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug("Got content, id={NodeId}", node.Id);
+ }
}
else
{
- _logger.LogDebug("No match.");
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug("No match.");
+ }
}
return node;
diff --git a/src/Umbraco.Core/Routing/ContentFinderByUrlAlias.cs b/src/Umbraco.Core/Routing/ContentFinderByUrlAlias.cs
index 7e51f63aa4..5a8f6e16fe 100644
--- a/src/Umbraco.Core/Routing/ContentFinderByUrlAlias.cs
+++ b/src/Umbraco.Core/Routing/ContentFinderByUrlAlias.cs
@@ -1,5 +1,6 @@
using System;
using System.Linq;
+using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Umbraco.Cms.Core.Models.PublishedContent;
using Umbraco.Cms.Core.PublishedCache;
@@ -42,7 +43,7 @@ namespace Umbraco.Cms.Core.Routing
///
/// The PublishedRequest.
/// A value indicating whether an Umbraco document was found and assigned.
- public bool TryFindContent(IPublishedRequestBuilder frequest)
+ public async Task TryFindContent(IPublishedRequestBuilder frequest)
{
if (!_umbracoContextAccessor.TryGetUmbracoContext(out var umbracoContext))
{
@@ -62,7 +63,10 @@ namespace Umbraco.Cms.Core.Routing
if (node != null)
{
frequest.SetPublishedContent(node);
- _logger.LogDebug("Path '{UriAbsolutePath}' is an alias for id={PublishedContentId}", frequest.Uri.AbsolutePath, node.Id);
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug("Path '{UriAbsolutePath}' is an alias for id={PublishedContentId}", frequest.Uri.AbsolutePath, node.Id);
+ }
}
}
diff --git a/src/Umbraco.Core/Routing/ContentFinderByUrlAndTemplate.cs b/src/Umbraco.Core/Routing/ContentFinderByUrlAndTemplate.cs
index dfdb5eec6a..f059850086 100644
--- a/src/Umbraco.Core/Routing/ContentFinderByUrlAndTemplate.cs
+++ b/src/Umbraco.Core/Routing/ContentFinderByUrlAndTemplate.cs
@@ -1,3 +1,4 @@
+using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Umbraco.Cms.Core.Configuration.Models;
@@ -49,7 +50,7 @@ namespace Umbraco.Cms.Core.Routing
/// The PublishedRequest.
/// A value indicating whether an Umbraco document was found and assigned.
/// If successful, also assigns the template.
- public override bool TryFindContent(IPublishedRequestBuilder frequest)
+ public override async Task TryFindContent(IPublishedRequestBuilder frequest)
{
var path = frequest.AbsolutePathDecoded;
@@ -61,7 +62,10 @@ namespace Umbraco.Cms.Core.Routing
// no template if "/"
if (path == "/")
{
- _logger.LogDebug("No template in path '/'");
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug("No template in path '/'");
+ }
return false;
}
@@ -74,11 +78,16 @@ namespace Umbraco.Cms.Core.Routing
if (template == null)
{
- _logger.LogDebug("Not a valid template: '{TemplateAlias}'", templateAlias);
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug("Not a valid template: '{TemplateAlias}'", templateAlias);
+ }
return false;
}
-
- _logger.LogDebug("Valid template: '{TemplateAlias}'", templateAlias);
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug("Valid template: '{TemplateAlias}'", templateAlias);
+ }
// look for node corresponding to the rest of the route
var route = frequest.Domain != null ? (frequest.Domain.ContentId + path) : path;
@@ -86,7 +95,10 @@ namespace Umbraco.Cms.Core.Routing
if (node == null)
{
- _logger.LogDebug("Not a valid route to node: '{Route}'", route);
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug("Not a valid route to node: '{Route}'", route);
+ }
return false;
}
diff --git a/src/Umbraco.Core/Routing/IContentFinder.cs b/src/Umbraco.Core/Routing/IContentFinder.cs
index 48a70d86e8..ab160715bb 100644
--- a/src/Umbraco.Core/Routing/IContentFinder.cs
+++ b/src/Umbraco.Core/Routing/IContentFinder.cs
@@ -1,3 +1,5 @@
+using System.Threading.Tasks;
+
namespace Umbraco.Cms.Core.Routing
{
///
@@ -11,6 +13,6 @@ namespace Umbraco.Cms.Core.Routing
/// The PublishedRequest.
/// A value indicating whether an Umbraco document was found and assigned.
/// Optionally, can also assign the template or anything else on the document request, although that is not required.
- bool TryFindContent(IPublishedRequestBuilder request);
+ Task TryFindContent(IPublishedRequestBuilder request);
}
}
diff --git a/src/Umbraco.Core/Routing/PublishedRouter.cs b/src/Umbraco.Core/Routing/PublishedRouter.cs
index 87ef468cd5..119f9980b4 100644
--- a/src/Umbraco.Core/Routing/PublishedRouter.cs
+++ b/src/Umbraco.Core/Routing/PublishedRouter.cs
@@ -95,7 +95,7 @@ namespace Umbraco.Cms.Core.Routing
return publishedRequestBuilder;
}
- private IPublishedRequest TryRouteRequest(IPublishedRequestBuilder request)
+ private async Task TryRouteRequest(IPublishedRequestBuilder request)
{
FindDomain(request);
@@ -109,7 +109,7 @@ namespace Umbraco.Cms.Core.Routing
return request.Build();
}
- FindPublishedContent(request);
+ await FindPublishedContent(request);
return request.Build();
}
@@ -131,7 +131,7 @@ namespace Umbraco.Cms.Core.Routing
// outbound routing performs different/simpler logic
if (options.RouteDirection == RouteDirection.Outbound)
{
- return TryRouteRequest(builder);
+ return await TryRouteRequest(builder);
}
// find domain
@@ -166,17 +166,20 @@ namespace Umbraco.Cms.Core.Routing
// to setup the rest of the pipeline but we don't want to run the finders since there's one assigned.
if (!builder.HasPublishedContent())
{
- _logger.LogDebug("FindPublishedContentAndTemplate: Path={UriAbsolutePath}", builder.Uri.AbsolutePath);
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("FindPublishedContentAndTemplate: Path={UriAbsolutePath}", builder.Uri.AbsolutePath);
+ }
// run the document finders
- foundContentByFinders = FindPublishedContent(builder);
+ foundContentByFinders = await FindPublishedContent(builder);
}
// if we are not a redirect
if (!builder.IsRedirect())
{
// handle not-found, redirects, access...
- HandlePublishedContent(builder);
+ await HandlePublishedContent(builder);
// find a template
FindTemplate(builder, foundContentByFinders);
@@ -270,7 +273,10 @@ namespace Umbraco.Cms.Core.Routing
const string tracePrefix = "FindDomain: ";
// note - we are not handling schemes nor ports here.
- _logger.LogDebug("{TracePrefix}Uri={RequestUri}", tracePrefix, request.Uri);
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("{TracePrefix}Uri={RequestUri}", tracePrefix, request.Uri);
+ }
var umbracoContext = _umbracoContextAccessor.GetRequiredUmbracoContext();
IDomainCache? domainsCache = umbracoContext.PublishedSnapshot.Domains;
var domains = domainsCache?.GetAll(includeWildcards: false).ToList();
@@ -311,8 +317,10 @@ namespace Umbraco.Cms.Core.Routing
if (domainAndUri != null)
{
// matching an existing domain
- _logger.LogDebug("{TracePrefix}Matches domain={Domain}, rootId={RootContentId}, culture={Culture}", tracePrefix, domainAndUri.Name, domainAndUri.ContentId, domainAndUri.Culture);
-
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("{TracePrefix}Matches domain={Domain}, rootId={RootContentId}, culture={Culture}", tracePrefix, domainAndUri.Name, domainAndUri.ContentId, domainAndUri.Culture);
+ }
request.SetDomain(domainAndUri);
// canonical? not implemented at the moment
@@ -325,12 +333,17 @@ namespace Umbraco.Cms.Core.Routing
else
{
// not matching any existing domain
- _logger.LogDebug("{TracePrefix}Matches no domain", tracePrefix);
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("{TracePrefix}Matches no domain", tracePrefix);
+ }
request.SetCulture(defaultCulture ?? CultureInfo.CurrentUICulture.Name);
}
-
- _logger.LogDebug("{TracePrefix}Culture={CultureName}", tracePrefix, request.Culture);
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("{TracePrefix}Culture={CultureName}", tracePrefix, request.Culture);
+ }
return request.Domain != null;
}
@@ -348,7 +361,10 @@ namespace Umbraco.Cms.Core.Routing
}
var nodePath = request.PublishedContent.Path;
- _logger.LogDebug("{TracePrefix}Path={NodePath}", tracePrefix, nodePath);
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("{TracePrefix}Path={NodePath}", tracePrefix, nodePath);
+ }
var rootNodeId = request.Domain != null ? request.Domain.ContentId : (int?)null;
var umbracoContext = _umbracoContextAccessor.GetRequiredUmbracoContext();
Domain? domain = DomainUtilities.FindWildcardDomainInPath(umbracoContext.PublishedSnapshot.Domains?.GetAll(true), nodePath, rootNodeId);
@@ -357,11 +373,17 @@ namespace Umbraco.Cms.Core.Routing
if (domain != null)
{
request.SetCulture(domain.Culture);
- _logger.LogDebug("{TracePrefix}Got domain on node {DomainContentId}, set culture to {CultureName}", tracePrefix, domain.ContentId, request.Culture);
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("{TracePrefix}Got domain on node {DomainContentId}, set culture to {CultureName}", tracePrefix, domain.ContentId, request.Culture);
+ }
}
else
{
- _logger.LogDebug("{TracePrefix}No match.", tracePrefix);
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("{TracePrefix}No match.", tracePrefix);
+ }
}
}
@@ -389,25 +411,41 @@ namespace Umbraco.Cms.Core.Routing
/// Tries to find the document matching the request, by running the IPublishedContentFinder instances.
///
/// There is no finder collection.
- internal bool FindPublishedContent(IPublishedRequestBuilder request)
+ internal async Task FindPublishedContent(IPublishedRequestBuilder request)
{
const string tracePrefix = "FindPublishedContent: ";
// look for the document
// the first successful finder, if any, will set this.PublishedContent, and may also set this.Template
// some finders may implement caching
- using (_profilingLogger.DebugDuration(
- $"{tracePrefix}Begin finders",
- $"{tracePrefix}End finders"))
+ DisposableTimer? profilingScope = null;
+ try
{
- // iterate but return on first one that finds it
- var found = _contentFinders.Any(finder =>
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
{
- _logger.LogDebug("Finder {ContentFinderType}", finder.GetType().FullName);
- return finder.TryFindContent(request);
- });
+ profilingScope = _profilingLogger.DebugDuration(
+ $"{tracePrefix}Begin finders",
+ $"{tracePrefix}End finders");
+ }
- _logger.LogDebug(
+ // iterate but return on first one that finds it
+ var found = false;
+ foreach (var contentFinder in _contentFinders)
+ {
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("Finder {ContentFinderType}", contentFinder.GetType().FullName);
+ }
+ found = await contentFinder.TryFindContent(request);
+ if (found)
+ {
+ break;
+ }
+ }
+
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug(
"Found? {Found}, Content: {PublishedContentId}, Template: {TemplateAlias}, Domain: {Domain}, Culture: {Culture}, StatusCode: {StatusCode}",
found,
request.HasPublishedContent() ? request.PublishedContent?.Id : "NULL",
@@ -415,9 +453,14 @@ namespace Umbraco.Cms.Core.Routing
request.HasDomain() ? request.Domain?.ToString() : "NULL",
request.Culture ?? "NULL",
request.ResponseStatusCode);
+ }
return found;
}
+ finally
+ {
+ profilingScope?.Dispose();
+ }
}
///
@@ -428,29 +471,40 @@ namespace Umbraco.Cms.Core.Routing
/// Handles "not found", internal redirects ...
/// things that must be handled in one place because they can create loops
///
- private void HandlePublishedContent(IPublishedRequestBuilder request)
+ private async Task HandlePublishedContent(IPublishedRequestBuilder request)
{
// because these might loop, we have to have some sort of infinite loop detection
int i = 0, j = 0;
const int maxLoop = 8;
do
{
- _logger.LogDebug("HandlePublishedContent: Loop {LoopCounter}", i);
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("HandlePublishedContent: Loop {LoopCounter}", i);
+ }
// handle not found
if (request.PublishedContent == null)
{
request.SetIs404();
- _logger.LogDebug("HandlePublishedContent: No document, try last chance lookup");
-
- // if it fails then give up, there isn't much more that we can do
- if (_contentLastChanceFinder.TryFindContent(request) == false)
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
{
- _logger.LogDebug("HandlePublishedContent: Failed to find a document, give up");
- break;
+ _logger.LogDebug("HandlePublishedContent: No document, try last chance lookup");
}
- _logger.LogDebug("HandlePublishedContent: Found a document");
+ // if it fails then give up, there isn't much more that we can do
+ if (await _contentLastChanceFinder.TryFindContent(request) == false)
+ {
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("HandlePublishedContent: Failed to find a document, give up");
+ }
+ break;
+ }
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("HandlePublishedContent: Found a document");
+ }
}
// follow internal redirects as long as it's not running out of control ie infinite loop of some sort
@@ -471,11 +525,16 @@ namespace Umbraco.Cms.Core.Routing
if (i == maxLoop || j == maxLoop)
{
- _logger.LogDebug("HandlePublishedContent: Looks like we are running into an infinite loop, abort");
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("HandlePublishedContent: Looks like we are running into an infinite loop, abort");
+ }
request.SetPublishedContent(null);
}
-
- _logger.LogDebug("HandlePublishedContent: End");
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("HandlePublishedContent: End");
+ }
}
///
@@ -526,21 +585,30 @@ namespace Umbraco.Cms.Core.Routing
if (valid == false)
{
// bad redirect - log and display the current page (legacy behavior)
- _logger.LogDebug(
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug(
"FollowInternalRedirects: Failed to redirect to id={InternalRedirectId}: value is not an int nor a GuidUdi.",
request.PublishedContent.GetProperty(Constants.Conventions.Content.InternalRedirectId)?.GetSourceValue());
+ }
}
if (internalRedirectNode == null)
{
- _logger.LogDebug(
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug(
"FollowInternalRedirects: Failed to redirect to id={InternalRedirectId}: no such published document.",
request.PublishedContent.GetProperty(Constants.Conventions.Content.InternalRedirectId)?.GetSourceValue());
+ }
}
else if (internalRedirectId == request.PublishedContent.Id)
{
// redirect to self
- _logger.LogDebug("FollowInternalRedirects: Redirecting to self, ignore");
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("FollowInternalRedirects: Redirecting to self, ignore");
+ }
}
else
{
@@ -557,7 +625,10 @@ namespace Umbraco.Cms.Core.Routing
}
redirect = true;
- _logger.LogDebug("FollowInternalRedirects: Redirecting to id={InternalRedirectId}", internalRedirectId);
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("FollowInternalRedirects: Redirecting to id={InternalRedirectId}", internalRedirectId);
+ }
}
return redirect;
@@ -598,7 +669,10 @@ namespace Umbraco.Cms.Core.Routing
// else lookup the template id on the document then lookup the template with that id.
if (request.HasTemplate())
{
- _logger.LogDebug("FindTemplate: Has a template already, and no alternate template.");
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("FindTemplate: Has a template already, and no alternate template.");
+ }
return;
}
@@ -609,7 +683,10 @@ namespace Umbraco.Cms.Core.Routing
request.SetTemplate(template);
if (template != null)
{
- _logger.LogDebug("FindTemplate: Running with template id={TemplateId} alias={TemplateAlias}", template.Id, template.Alias);
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("FindTemplate: Running with template id={TemplateId} alias={TemplateAlias}", template.Id, template.Alias);
+ }
}
else
{
@@ -625,10 +702,15 @@ namespace Umbraco.Cms.Core.Routing
// ignore if the alias does not match - just trace
if (request.HasTemplate())
{
- _logger.LogDebug("FindTemplate: Has a template already, but also an alternative template.");
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("FindTemplate: Has a template already, but also an alternative template.");
+ }
+ }
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("FindTemplate: Look for alternative template alias={AltTemplate}", altTemplate);
}
-
- _logger.LogDebug("FindTemplate: Look for alternative template alias={AltTemplate}", altTemplate);
// IsAllowedTemplate deals both with DisableAlternativeTemplates and ValidateAlternativeTemplates settings
if (request.PublishedContent.IsAllowedTemplate(
@@ -644,28 +726,39 @@ namespace Umbraco.Cms.Core.Routing
if (template != null)
{
request.SetTemplate(template);
- _logger.LogDebug("FindTemplate: Got alternative template id={TemplateId} alias={TemplateAlias}", template.Id, template.Alias);
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("FindTemplate: Got alternative template id={TemplateId} alias={TemplateAlias}", template.Id, template.Alias);
+ }
}
else
{
- _logger.LogDebug("FindTemplate: The alternative template with alias={AltTemplate} does not exist, ignoring.", altTemplate);
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("FindTemplate: The alternative template with alias={AltTemplate} does not exist, ignoring.", altTemplate);
+ }
}
}
else
{
_logger.LogWarning("FindTemplate: Alternative template {TemplateAlias} is not allowed on node {NodeId}, ignoring.", altTemplate, request.PublishedContent.Id);
-
// no allowed, back to default
var templateId = request.PublishedContent.TemplateId;
ITemplate? template = GetTemplate(templateId);
request.SetTemplate(template);
- _logger.LogDebug("FindTemplate: Running with template id={TemplateId} alias={TemplateAlias}", template?.Id, template?.Alias);
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("FindTemplate: Running with template id={TemplateId} alias={TemplateAlias}", template?.Id, template?.Alias);
+ }
}
}
if (!request.HasTemplate())
{
- _logger.LogDebug("FindTemplate: No template was found.");
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("FindTemplate: No template was found.");
+ }
// initial idea was: if we're not already 404 and UmbracoSettings.HandleMissingTemplateAs404 is true
// then reset _pcr.Document to null to force a 404.
@@ -682,11 +775,16 @@ namespace Umbraco.Cms.Core.Routing
{
if (templateId.HasValue == false || templateId.Value == default)
{
- _logger.LogDebug("GetTemplateModel: No template.");
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("GetTemplateModel: No template.");
+ }
return null;
}
-
- _logger.LogDebug("GetTemplateModel: Get template id={TemplateId}", templateId);
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("GetTemplateModel: Get template id={TemplateId}", templateId);
+ }
if (templateId == null)
{
@@ -698,8 +796,10 @@ namespace Umbraco.Cms.Core.Routing
{
throw new InvalidOperationException("The template with Id " + templateId + " does not exist, the page cannot render.");
}
-
- _logger.LogDebug("GetTemplateModel: Got template id={TemplateId} alias={TemplateAlias}", template.Id, template.Alias);
+ if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
+ {
+ _logger.LogDebug("GetTemplateModel: Got template id={TemplateId} alias={TemplateAlias}", template.Id, template.Alias);
+ }
return template;
}
diff --git a/src/Umbraco.Infrastructure/Routing/ContentFinderByConfigured404.cs b/src/Umbraco.Infrastructure/Routing/ContentFinderByConfigured404.cs
index 3bcb8c525f..8fec3104de 100644
--- a/src/Umbraco.Infrastructure/Routing/ContentFinderByConfigured404.cs
+++ b/src/Umbraco.Infrastructure/Routing/ContentFinderByConfigured404.cs
@@ -1,6 +1,7 @@
using System;
using System.Globalization;
using System.Linq;
+using System.Threading.Tasks;
using Examine;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
@@ -51,14 +52,16 @@ namespace Umbraco.Cms.Core.Routing
///
/// The PublishedRequest.
/// A value indicating whether an Umbraco document was found and assigned.
- public bool TryFindContent(IPublishedRequestBuilder frequest)
+ public async Task TryFindContent(IPublishedRequestBuilder frequest)
{
if (!_umbracoContextAccessor.TryGetUmbracoContext(out var umbracoContext))
{
return false;
}
-
- _logger.LogDebug("Looking for a page to handle 404.");
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug("Looking for a page to handle 404.");
+ }
int? domainContentId = null;
@@ -107,17 +110,24 @@ namespace Umbraco.Cms.Core.Routing
if (error404.HasValue)
{
- _logger.LogDebug("Got id={ErrorNodeId}.", error404.Value);
-
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug("Got id={ErrorNodeId}.", error404.Value);
+ }
content = umbracoContext.Content?.GetById(error404.Value);
-
- _logger.LogDebug(content == null
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug(content == null
? "Could not find content with that id."
: "Found corresponding content.");
+ }
}
else
{
- _logger.LogDebug("Got nothing.");
+ if (_logger.IsEnabled(LogLevel.Debug))
+ {
+ _logger.LogDebug("Got nothing.");
+ }
}
frequest?
diff --git a/tests/Umbraco.Tests.Common/TestLastChanceFinder.cs b/tests/Umbraco.Tests.Common/TestLastChanceFinder.cs
index 6a3c2e956a..6f99b15ac6 100644
--- a/tests/Umbraco.Tests.Common/TestLastChanceFinder.cs
+++ b/tests/Umbraco.Tests.Common/TestLastChanceFinder.cs
@@ -1,12 +1,13 @@
-// Copyright (c) Umbraco.
+// Copyright (c) Umbraco.
// See LICENSE for more details.
+using System.Threading.Tasks;
using Umbraco.Cms.Core.Routing;
namespace Umbraco.Cms.Tests.Common
{
public class TestLastChanceFinder : IContentLastChanceFinder
{
- public bool TryFindContent(IPublishedRequestBuilder frequest) => false;
+ public async Task TryFindContent(IPublishedRequestBuilder frequest) => false;
}
}
diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByAliasTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByAliasTests.cs
index 0cdbce3da8..3404463dbf 100644
--- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByAliasTests.cs
+++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByAliasTests.cs
@@ -47,7 +47,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
var lookup =
new ContentFinderByUrlAlias(Mock.Of>(), Mock.Of(), VariationContextAccessor, umbracoContextAccessor);
- var result = lookup.TryFindContent(frequest);
+ var result = await lookup.TryFindContent(frequest);
Assert.IsTrue(result);
Assert.AreEqual(frequest.PublishedContent.Id, nodeMatch);
diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByAliasWithDomainsTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByAliasWithDomainsTests.cs
index 8b77c48599..aa62f461ae 100644
--- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByAliasWithDomainsTests.cs
+++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByAliasWithDomainsTests.cs
@@ -49,7 +49,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
}
var finder = new ContentFinderByUrlAlias(Mock.Of>(), Mock.Of(), VariationContextAccessor, umbracoContextAccessor);
- var result = finder.TryFindContent(request);
+ var result = await finder.TryFindContent(request);
if (expectedNode > 0)
{
diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByIdTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByIdTests.cs
index d84f9cb6fb..caa335023c 100644
--- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByIdTests.cs
+++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByIdTests.cs
@@ -50,7 +50,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
Mock.Of>(), Mock.Of(), umbracoContextAccessor);
- var result = lookup.TryFindContent(frequest);
+ var result = await lookup.TryFindContent(frequest);
Assert.IsTrue(result);
Assert.AreEqual(frequest.PublishedContent.Id, nodeMatch);
diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByPageIdQueryTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByPageIdQueryTests.cs
index 9aceaf766a..b65d19e1bc 100644
--- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByPageIdQueryTests.cs
+++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByPageIdQueryTests.cs
@@ -54,7 +54,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
var lookup = new ContentFinderByPageIdQuery(mockRequestAccessor.Object, umbracoContextAccessor);
- var result = lookup.TryFindContent(frequest);
+ var result = await lookup.TryFindContent(frequest);
Assert.IsTrue(result);
Assert.AreEqual(frequest.PublishedContent.Id, nodeMatch);
diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByUrlAliasTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByUrlAliasTests.cs
index 1ad49a95d9..8176071934 100644
--- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByUrlAliasTests.cs
+++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByUrlAliasTests.cs
@@ -1,4 +1,5 @@
using System;
+using System.Threading.Tasks;
using AutoFixture.NUnit3;
using Moq;
using NUnit.Framework;
@@ -24,7 +25,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
[InlineAutoMoqData("/only/one/alias", 100111)]
[InlineAutoMoqData("/ONLY/one/Alias", 100111)]
[InlineAutoMoqData("/alias43", 100121)]
- public void Lookup_By_Url_Alias (
+ public async Task Lookup_By_Url_Alias (
string relativeUrl,
int nodeMatch,
[Frozen] IPublishedContentCache publishedContentCache,
@@ -54,7 +55,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
Mock.Get(variationContextAccessor).Setup(x => x.VariationContext).Returns(variationContext);
var publishedRequestBuilder = new PublishedRequestBuilder(new Uri(absoluteUrl, UriKind.Absolute), fileService);
//Act
- var result = sut.TryFindContent(publishedRequestBuilder);
+ var result = await sut.TryFindContent(publishedRequestBuilder);
Assert.IsTrue(result);
Assert.AreEqual(publishedRequestBuilder.PublishedContent.Id, nodeMatch);
diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByUrlAndTemplateTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByUrlAndTemplateTests.cs
index 146d1c026e..47b93b0f01 100644
--- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByUrlAndTemplateTests.cs
+++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByUrlAndTemplateTests.cs
@@ -72,7 +72,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
umbracoContextAccessor,
Mock.Of>(x=>x.CurrentValue == webRoutingSettings));
- var result = lookup.TryFindContent(frequest);
+ var result = await lookup.TryFindContent(frequest);
IPublishedRequest request = frequest.Build();
diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByUrlTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByUrlTests.cs
index 556eed9622..95a47ec8bd 100644
--- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByUrlTests.cs
+++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByUrlTests.cs
@@ -63,7 +63,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
if (urlString == "/home/sub1")
System.Diagnostics.Debugger.Break();
- var result = lookup.finder.TryFindContent(lookup.frequest);
+ var result = await lookup.finder.TryFindContent(lookup.frequest);
if (expectedId > 0)
{
@@ -88,7 +88,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
Assert.IsFalse(GlobalSettings.HideTopLevelNodeFromPath);
- var result = lookup.finder.TryFindContent(lookup.frequest);
+ var result = await lookup.finder.TryFindContent(lookup.frequest);
Assert.IsTrue(result);
Assert.AreEqual(expectedId, lookup.frequest.PublishedContent.Id);
@@ -107,7 +107,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
var lookup = await GetContentFinder(urlString);
- var result = lookup.finder.TryFindContent(lookup.frequest);
+ var result = await lookup.finder.TryFindContent(lookup.frequest);
Assert.IsTrue(result);
Assert.AreEqual(expectedId, lookup.frequest.PublishedContent.Id);
@@ -132,7 +132,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
lookup.frequest.SetDomain(new DomainAndUri(new Domain(1, "mysite", -1, "en-US", false), new Uri("http://mysite/")));
- var result = lookup.finder.TryFindContent(lookup.frequest);
+ var result = await lookup.finder.TryFindContent(lookup.frequest);
Assert.IsTrue(result);
Assert.AreEqual(expectedId, lookup.frequest.PublishedContent.Id);
@@ -158,7 +158,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
lookup.frequest.SetDomain(new DomainAndUri(new Domain(1, "mysite/æøå", -1, "en-US", false), new Uri("http://mysite/æøå")));
- var result = lookup.finder.TryFindContent(lookup.frequest);
+ var result = await lookup.finder.TryFindContent(lookup.frequest);
Assert.IsTrue(result);
Assert.AreEqual(expectedId, lookup.frequest.PublishedContent.Id);
diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByUrlWithDomainsTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByUrlWithDomainsTests.cs
index d992140386..49e9698e2a 100644
--- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByUrlWithDomainsTests.cs
+++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/ContentFinderByUrlWithDomainsTests.cs
@@ -140,7 +140,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
publishedRouter.FindDomain(frequest);
var lookup = new ContentFinderByUrl(Mock.Of>(), umbracoContextAccessor);
- var result = lookup.TryFindContent(frequest);
+ var result = await lookup.TryFindContent(frequest);
Assert.IsTrue(result);
Assert.AreEqual(expectedId, frequest.PublishedContent.Id);
}
@@ -183,7 +183,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
Assert.AreEqual(expectedCulture, frequest.Culture);
var lookup = new ContentFinderByUrl(Mock.Of>(), umbracoContextAccessor);
- var result = lookup.TryFindContent(frequest);
+ var result = await lookup.TryFindContent(frequest);
Assert.IsTrue(result);
Assert.AreEqual(expectedId, frequest.PublishedContent.Id);
}
diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/DomainsAndCulturesTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/DomainsAndCulturesTests.cs
index ccaeee9322..3e6d427108 100644
--- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/DomainsAndCulturesTests.cs
+++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/DomainsAndCulturesTests.cs
@@ -304,7 +304,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
Assert.AreEqual(expectedCulture, frequest.Culture);
var finder = new ContentFinderByUrl(Mock.Of>(), umbracoContextAccessor);
- var result = finder.TryFindContent(frequest);
+ var result = await finder.TryFindContent(frequest);
Assert.IsTrue(result);
Assert.AreEqual(frequest.PublishedContent.Id, expectedNode);
@@ -352,7 +352,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
// find document
var finder = new ContentFinderByUrl(Mock.Of>(), umbracoContextAccessor);
- var result = finder.TryFindContent(frequest);
+ var result = await finder.TryFindContent(frequest);
// apply wildcard domain
publishedRouter.HandleWildcardDomains(frequest);
@@ -388,7 +388,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
Assert.AreEqual(expectedCulture, frequest.Culture);
var finder = new ContentFinderByUrl(Mock.Of>(), umbracoContextAccessor);
- var result = finder.TryFindContent(frequest);
+ var result = await finder.TryFindContent(frequest);
Assert.IsTrue(result);
Assert.AreEqual(frequest.PublishedContent.Id, expectedNode);
diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/UrlsWithNestedDomains.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/UrlsWithNestedDomains.cs
index 1c96f0c0bc..15397b7dfe 100644
--- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/UrlsWithNestedDomains.cs
+++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/UrlsWithNestedDomains.cs
@@ -72,7 +72,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Routing
// check that it's been routed
var lookup = new ContentFinderByUrl(Mock.Of>(), umbracoContextAccessor);
- var result = lookup.TryFindContent(frequest);
+ var result = await lookup.TryFindContent(frequest);
Assert.IsTrue(result);
Assert.AreEqual(100111, frequest.PublishedContent.Id);