From afb952fa3805c1f549f848b5ac7bcbe822047ce1 Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 6 Aug 2021 15:54:50 -0600 Subject: [PATCH] Needs a null check so it doesn't explode when saving content during a migration. --- .../Routing/RedirectTrackingHandler.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Infrastructure/Routing/RedirectTrackingHandler.cs b/src/Umbraco.Infrastructure/Routing/RedirectTrackingHandler.cs index 6fa7789bcf..ed1370e5a5 100644 --- a/src/Umbraco.Infrastructure/Routing/RedirectTrackingHandler.cs +++ b/src/Umbraco.Infrastructure/Routing/RedirectTrackingHandler.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Cms.Core.Configuration.Models; using Umbraco.Cms.Core.Events; @@ -29,6 +30,7 @@ namespace Umbraco.Cms.Core.Routing INotificationHandler, INotificationHandler { + private readonly ILogger _logger; private readonly IOptionsMonitor _webRoutingSettings; private readonly IPublishedSnapshotAccessor _publishedSnapshotAccessor; private readonly IRedirectUrlService _redirectUrlService; @@ -36,8 +38,14 @@ namespace Umbraco.Cms.Core.Routing private const string NotificationStateKey = "Umbraco.Cms.Core.Routing.RedirectTrackingHandler"; - public RedirectTrackingHandler(IOptionsMonitor webRoutingSettings, IPublishedSnapshotAccessor publishedSnapshotAccessor, IRedirectUrlService redirectUrlService, IVariationContextAccessor variationContextAccessor) + public RedirectTrackingHandler( + ILogger logger, + IOptionsMonitor webRoutingSettings, + IPublishedSnapshotAccessor publishedSnapshotAccessor, + IRedirectUrlService redirectUrlService, + IVariationContextAccessor variationContextAccessor) { + _logger = logger; _webRoutingSettings = webRoutingSettings; _publishedSnapshotAccessor = publishedSnapshotAccessor; _redirectUrlService = redirectUrlService; @@ -112,7 +120,13 @@ namespace Umbraco.Cms.Core.Routing private void CreateRedirects(OldRoutesDictionary oldRoutes) { - var contentCache = _publishedSnapshotAccessor.PublishedSnapshot.Content; + var contentCache = _publishedSnapshotAccessor.PublishedSnapshot?.Content; + + if (contentCache == null) + { + _logger.LogWarning("Could not track redirects because there is no current published snapshot available."); + return; + } foreach (var oldRoute in oldRoutes) {