diff --git a/build/azure-pipelines.yml b/build/azure-pipelines.yml
index 7f231bd298..38d5e7673b 100644
--- a/build/azure-pipelines.yml
+++ b/build/azure-pipelines.yml
@@ -538,7 +538,7 @@ stages:
inputs:
targetType: inline
script: |
- choco install docfx --version=2.58.5 -y
+ choco install docfx --version=2.59.0 -y
if ($lastexitcode -ne 0){
throw ("Error installing DocFX")
}
diff --git a/src/ApiDocs/umbracotemplate/partials/class.tmpl.partial b/src/ApiDocs/umbracotemplate/partials/class.tmpl.partial
index 9153a863a4..aa50d597ba 100644
--- a/src/ApiDocs/umbracotemplate/partials/class.tmpl.partial
+++ b/src/ApiDocs/umbracotemplate/partials/class.tmpl.partial
@@ -15,8 +15,8 @@
{{syntax.content.0.value}}
diff --git a/src/Umbraco.Core/Configuration/Models/GlobalSettings.cs b/src/Umbraco.Core/Configuration/Models/GlobalSettings.cs
index 419570ab0d..5e42d3b8be 100644
--- a/src/Umbraco.Core/Configuration/Models/GlobalSettings.cs
+++ b/src/Umbraco.Core/Configuration/Models/GlobalSettings.cs
@@ -29,6 +29,7 @@ namespace Umbraco.Cms.Core.Configuration.Models
internal const string StaticNoNodesViewPath = "~/umbraco/UmbracoWebsite/NoNodes.cshtml";
internal const string StaticSqlWriteLockTimeOut = "00:00:05";
internal const bool StaticSanitizeTinyMce = false;
+ internal const int StaticMainDomReleaseSignalPollingInterval = 2000;
///
/// Gets or sets a value for the reserved URLs (must end with a comma).
@@ -137,6 +138,26 @@ namespace Umbraco.Cms.Core.Configuration.Models
///
public string MainDomLock { get; set; } = string.Empty;
+ ///
+ /// Gets or sets a value to discriminate MainDom boundaries.
+ ///
+ /// Generally the default should suffice but useful for advanced scenarios e.g. azure deployment slot based zero downtime deployments.
+ ///
+ ///
+ public string MainDomKeyDiscriminator { get; set; } = string.Empty;
+
+ ///
+ /// Gets or sets the duration (in milliseconds) for which the MainDomLock release signal polling task should sleep.
+ ///
+ ///
+ /// Doesn't apply to MainDomSemaphoreLock.
+ ///
+ /// The default value is 2000ms.
+ ///
+ ///
+ [DefaultValue(StaticMainDomReleaseSignalPollingInterval)]
+ public int MainDomReleaseSignalPollingInterval { get; set; } = StaticMainDomReleaseSignalPollingInterval;
+
///
/// Gets or sets the telemetry ID.
///
diff --git a/src/Umbraco.Core/Constants-HttpClients.cs b/src/Umbraco.Core/Constants-HttpClients.cs
new file mode 100644
index 0000000000..474ec49a50
--- /dev/null
+++ b/src/Umbraco.Core/Constants-HttpClients.cs
@@ -0,0 +1,19 @@
+namespace Umbraco.Cms.Core
+{
+ ///
+ /// Defines constants.
+ ///
+ public static partial class Constants
+ {
+ ///
+ /// Defines constants for named http clients.
+ ///
+ public static class HttpClients
+ {
+ ///
+ /// Name for http client which ignores certificate errors.
+ ///
+ public const string IgnoreCertificateErrors = "Umbraco:HttpClients:IgnoreCertificateErrors";
+ }
+ }
+}
diff --git a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.cs b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.cs
index c4a95d45e5..235dc71252 100644
--- a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.cs
+++ b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.cs
@@ -262,6 +262,7 @@ namespace Umbraco.Cms.Core.DependencyInjection
Services.AddSingleton
();
// Register telemetry service used to gather data about installed packages
+ Services.AddUnique();
Services.AddUnique();
// Register a noop IHtmlSanitizer to be replaced
diff --git a/src/Umbraco.Core/Extensions/ClaimsIdentityExtensions.cs b/src/Umbraco.Core/Extensions/ClaimsIdentityExtensions.cs
index bceddf1fd6..0319be3297 100644
--- a/src/Umbraco.Core/Extensions/ClaimsIdentityExtensions.cs
+++ b/src/Umbraco.Core/Extensions/ClaimsIdentityExtensions.cs
@@ -132,7 +132,7 @@ namespace Umbraco.Extensions
}
}
- verifiedIdentity = identity.AuthenticationType == Constants.Security.BackOfficeAuthenticationType ? identity : new ClaimsIdentity(identity.Claims, Constants.Security.BackOfficeAuthenticationType);
+ verifiedIdentity = identity.AuthenticationType == Constants.Security.BackOfficeAuthenticationType ? identity : new ClaimsIdentity(identity.Claims, Constants.Security.BackOfficeAuthenticationType);
return true;
}
diff --git a/src/Umbraco.Core/Install/InstallSteps/TelemetryIdentifierStep.cs b/src/Umbraco.Core/Install/InstallSteps/TelemetryIdentifierStep.cs
index 37769afc53..d95fa6919d 100644
--- a/src/Umbraco.Core/Install/InstallSteps/TelemetryIdentifierStep.cs
+++ b/src/Umbraco.Core/Install/InstallSteps/TelemetryIdentifierStep.cs
@@ -1,10 +1,13 @@
using System;
using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Umbraco.Cms.Core.Configuration;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Cms.Core.Install.Models;
+using Umbraco.Cms.Core.Telemetry;
+using Umbraco.Cms.Web.Common.DependencyInjection;
namespace Umbraco.Cms.Core.Install.InstallSteps
{
@@ -13,31 +16,29 @@ namespace Umbraco.Cms.Core.Install.InstallSteps
PerformsAppRestart = false)]
public class TelemetryIdentifierStep : InstallSetupStep