diff --git a/src/Umbraco.Infrastructure/Runtime/RuntimeState.cs b/src/Umbraco.Infrastructure/Runtime/RuntimeState.cs
index 73b6692e3a..c81041849a 100644
--- a/src/Umbraco.Infrastructure/Runtime/RuntimeState.cs
+++ b/src/Umbraco.Infrastructure/Runtime/RuntimeState.cs
@@ -44,27 +44,6 @@ namespace Umbraco.Cms.Infrastructure.Runtime
{
}
- ///
- /// Initializes a new instance of the class.
- ///
- public RuntimeState(
- IOptions globalSettings,
- IOptions unattendedSettings,
- IUmbracoVersion umbracoVersion,
- IUmbracoDatabaseFactory databaseFactory,
- ILogger logger,
- PendingPackageMigrations packageMigrationState)
- : this(
- globalSettings,
- unattendedSettings,
- umbracoVersion,
- databaseFactory,
- logger,
- packageMigrationState,
- StaticServiceProvider.Instance.GetRequiredService())
- {
- }
-
public RuntimeState(
IOptions globalSettings,
IOptions unattendedSettings,
@@ -83,6 +62,28 @@ namespace Umbraco.Cms.Infrastructure.Runtime
_conflictingRouteService = conflictingRouteService;
}
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [Obsolete("use ctor with all params")]
+ public RuntimeState(
+ IOptions globalSettings,
+ IOptions unattendedSettings,
+ IUmbracoVersion umbracoVersion,
+ IUmbracoDatabaseFactory databaseFactory,
+ ILogger logger,
+ PendingPackageMigrations packageMigrationState)
+ : this(
+ globalSettings,
+ unattendedSettings,
+ umbracoVersion,
+ databaseFactory,
+ logger,
+ packageMigrationState,
+ StaticServiceProvider.Instance.GetRequiredService())
+ {
+ }
+
///
public Version Version => _umbracoVersion.Version;
diff --git a/src/Umbraco.Web.BackOffice/Services/ConflictingRouteService.cs b/src/Umbraco.Web.BackOffice/Services/ConflictingRouteService.cs
index 2951ace9e1..af8d0d877e 100644
--- a/src/Umbraco.Web.BackOffice/Services/ConflictingRouteService.cs
+++ b/src/Umbraco.Web.BackOffice/Services/ConflictingRouteService.cs
@@ -1,7 +1,9 @@
using System;
using System.Linq;
+using System.Reflection;
using Umbraco.Cms.Core.Composing;
using Umbraco.Cms.Core.Services;
+using Umbraco.Cms.Web.Common.Attributes;
using Umbraco.Cms.Web.Common.Controllers;
namespace Umbraco.Cms.Web.BackOffice.Services
@@ -21,10 +23,20 @@ namespace Umbraco.Cms.Web.BackOffice.Services
var controllers = _typeLoader.GetTypes().ToList();
foreach (Type controller in controllers)
{
- if (controllers.Count(x => x.Name == controller.Name) > 1)
+ var potentialConflicting = controllers.Where(x => x.Name == controller.Name).ToArray();
+ if (potentialConflicting.Length > 1)
{
- controllerName = controller.Name;
- return true;
+ //If we have any with same controller name and located in the same area, then it is a confict.
+ var conflicting = potentialConflicting
+ .Select(x => x.GetCustomAttribute())
+ .GroupBy(x => x?.AreaName)
+ .Any(x => x?.Count() > 1);
+
+ if (conflicting)
+ {
+ controllerName = controller.Name;
+ return true;
+ }
}
}