From b1f6fb914f6029fc96d754d8c3357fed3b51ce27 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Fri, 28 Aug 2020 11:54:36 +0200 Subject: [PATCH 01/56] Resolves issue with rendering back-office media selections when synchronous IO is not allowed. --- .../DetermineAmbiguousActionByPassingParameters.cs | 13 +++++++++---- .../UmbracoBackOfficeServiceCollectionExtensions.cs | 1 - .../Extensions/HttpRequestExtensions.cs | 2 -- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Web.BackOffice/Controllers/DetermineAmbiguousActionByPassingParameters.cs b/src/Umbraco.Web.BackOffice/Controllers/DetermineAmbiguousActionByPassingParameters.cs index a6432402b4..fc6c3b6814 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/DetermineAmbiguousActionByPassingParameters.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/DetermineAmbiguousActionByPassingParameters.cs @@ -3,15 +3,16 @@ using System.Collections; using System.Collections.Generic; using System.Linq; using System.Net.Http; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Abstractions; using Microsoft.AspNetCore.Mvc.ActionConstraints; using Microsoft.AspNetCore.Routing; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; using Umbraco.Core; using Umbraco.Extensions; using Umbraco.Web.BackOffice.ModelBinders; -using Microsoft.AspNetCore.Http; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; namespace Umbraco.Web.BackOffice.Controllers { @@ -102,7 +103,11 @@ namespace Umbraco.Web.BackOffice.Controllers // IMPORTANT: Ensure the requestBody can be read multiple times. routeContext.HttpContext.Request.EnableBuffering(); - var body = _requestBody ??= routeContext.HttpContext.Request.GetRawBodyString(); + // We need to use the asynchronous method here if synchronous IO is not allowed (it may or may not be, depending + // on configuration in UmbracoBackOfficeServiceCollectionExtensions.AddUmbraco()). + // We can't use async/await due to the need to override IsValidForRequest, which doesn't have an async override, so going with + // this, which seems to be the least worst option for "sync to async" (https://stackoverflow.com/a/32429753/489433). + var body = _requestBody ??= Task.Run(() => routeContext.HttpContext.Request.GetRawBodyStringAsync()).GetAwaiter().GetResult(); var jToken = JsonConvert.DeserializeObject(body); diff --git a/src/Umbraco.Web.BackOffice/Extensions/UmbracoBackOfficeServiceCollectionExtensions.cs b/src/Umbraco.Web.BackOffice/Extensions/UmbracoBackOfficeServiceCollectionExtensions.cs index fc3efab5e0..7bdc8b1b5f 100644 --- a/src/Umbraco.Web.BackOffice/Extensions/UmbracoBackOfficeServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.BackOffice/Extensions/UmbracoBackOfficeServiceCollectionExtensions.cs @@ -50,7 +50,6 @@ namespace Umbraco.Extensions //But as far as I can see, there are still precompiled views, even when this is activated, so maybe it is okay. services.AddControllersWithViews().AddRazorRuntimeCompilation(); - // If using Kestrel: https://stackoverflow.com/a/55196057 services.Configure(options => { diff --git a/src/Umbraco.Web.Common/Extensions/HttpRequestExtensions.cs b/src/Umbraco.Web.Common/Extensions/HttpRequestExtensions.cs index 5baedf3ded..ff481b7d37 100644 --- a/src/Umbraco.Web.Common/Extensions/HttpRequestExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/HttpRequestExtensions.cs @@ -78,8 +78,6 @@ namespace Umbraco.Extensions request.Body.Seek(0, SeekOrigin.Begin); return result; } - - } public static async Task GetRawBodyStringAsync(this HttpRequest request, Encoding encoding = null) From bdfa1fb644e5bdfafb3961bece3ff7189026694a Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Fri, 28 Aug 2020 12:56:40 +0200 Subject: [PATCH 02/56] Removed the server option to allow synchronous IO. --- .../UmbracoBackOfficeServiceCollectionExtensions.cs | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/Umbraco.Web.BackOffice/Extensions/UmbracoBackOfficeServiceCollectionExtensions.cs b/src/Umbraco.Web.BackOffice/Extensions/UmbracoBackOfficeServiceCollectionExtensions.cs index 7bdc8b1b5f..e09a29d157 100644 --- a/src/Umbraco.Web.BackOffice/Extensions/UmbracoBackOfficeServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.BackOffice/Extensions/UmbracoBackOfficeServiceCollectionExtensions.cs @@ -50,17 +50,6 @@ namespace Umbraco.Extensions //But as far as I can see, there are still precompiled views, even when this is activated, so maybe it is okay. services.AddControllersWithViews().AddRazorRuntimeCompilation(); - // If using Kestrel: https://stackoverflow.com/a/55196057 - services.Configure(options => - { - options.AllowSynchronousIO = true; - }); - - services.Configure(options => - { - options.AllowSynchronousIO = true; - }); - return services; } From 38897c297ff22d515c4c4d8317d791a9c547120b Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Fri, 16 Oct 2020 08:38:25 +0200 Subject: [PATCH 03/56] Debug info for tests, to debug on Azure Devops Signed-off-by: Bjarke Berg --- .../Testing/UmbracoIntegrationTest.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs index 950104062f..71759db71c 100644 --- a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs +++ b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs @@ -27,6 +27,7 @@ using System.Collections.Generic; using Microsoft.Extensions.Configuration; using System.Data.SqlClient; using System.Data.Common; +using System.Diagnostics; using System.IO; using Umbraco.Core.Configuration.Models; using Microsoft.Extensions.Options; @@ -83,12 +84,19 @@ namespace Umbraco.Tests.Integration.Testing _testTeardown = null; FirstTestInFixture = false; FirstTestInSession = false; + + _stopWatch.Stop(); + TestContext.Progress.WriteLine($" {_stopWatch.Elapsed}"); } [SetUp] public virtual void Setup() { + TestContext.Progress.Write($"Start test {_testCount++}: "); + _stopWatch = new Stopwatch(); + _stopWatch.Start(); var hostBuilder = CreateHostBuilder(); + var host = hostBuilder.StartAsync().GetAwaiter().GetResult(); Services = host.Services; var app = new ApplicationBuilder(host.Services); @@ -490,5 +498,7 @@ namespace Umbraco.Tests.Integration.Testing protected static bool FirstTestInSession = true; protected bool FirstTestInFixture = true; + private Stopwatch _stopWatch; + private static int _testCount = 1; } } From fc89de9541b229f56bdf5a1d8a72add0490bc9a3 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Fri, 16 Oct 2020 09:49:20 +0200 Subject: [PATCH 04/56] Debug info for tests, to debug on Azure Devops Signed-off-by: Bjarke Berg --- .../Testing/UmbracoIntegrationTest.cs | 2 +- src/Umbraco.Tests.Integration/Tests.cs | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Tests.Integration/Tests.cs diff --git a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs index 71759db71c..ce982b4905 100644 --- a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs +++ b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs @@ -92,7 +92,7 @@ namespace Umbraco.Tests.Integration.Testing [SetUp] public virtual void Setup() { - TestContext.Progress.Write($"Start test {_testCount++}: "); + TestContext.Progress.Write($"Start test {_testCount++}: {TestContext.CurrentContext.Test.Name}"); _stopWatch = new Stopwatch(); _stopWatch.Start(); var hostBuilder = CreateHostBuilder(); diff --git a/src/Umbraco.Tests.Integration/Tests.cs b/src/Umbraco.Tests.Integration/Tests.cs new file mode 100644 index 0000000000..1bd39ebad6 --- /dev/null +++ b/src/Umbraco.Tests.Integration/Tests.cs @@ -0,0 +1,21 @@ +using NUnit.Framework; +using Umbraco.Tests.Integration.Testing; + +namespace Umbraco.Tests.Integration +{ + [TestFixture] + public class Tests : UmbracoIntegrationTest + { + [Test] + public void Test__Stupid_test_that_only_is_used_to_check_how_long_time_we_spend_int_setup_and_teardown1() + { + + } + + [Test] + public void Test__Stupid_test_that_only_is_used_to_check_how_long_time_we_spend_int_setup_and_teardown2() + { + + } + } +} From ee1b4eff2c0467907334be85b2a1e73a8ffaa297 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Fri, 16 Oct 2020 09:52:39 +0200 Subject: [PATCH 05/56] Debug info for tests, to debug on Azure Devops Signed-off-by: Bjarke Berg --- .../Testing/UmbracoIntegrationTest.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs index ce982b4905..ad861251ba 100644 --- a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs +++ b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs @@ -86,7 +86,7 @@ namespace Umbraco.Tests.Integration.Testing FirstTestInSession = false; _stopWatch.Stop(); - TestContext.Progress.WriteLine($" {_stopWatch.Elapsed}"); + TestContext.Progress.WriteLine($" Total: {_stopWatch.Elapsed}, Step1: {_stopWatchStep1}, Step1: {_stopWatchStep2}"); } [SetUp] @@ -97,11 +97,13 @@ namespace Umbraco.Tests.Integration.Testing _stopWatch.Start(); var hostBuilder = CreateHostBuilder(); - var host = hostBuilder.StartAsync().GetAwaiter().GetResult(); + var host = hostBuilder.Start(); + _stopWatchStep1 = _stopWatch.Elapsed; Services = host.Services; var app = new ApplicationBuilder(host.Services); - Configure(app); //Takes around 200 ms + Configure(app); //Takes around 200 ms + _stopWatchStep2 = _stopWatch.Elapsed; OnFixtureTearDown(() => host.Dispose()); } @@ -500,5 +502,7 @@ namespace Umbraco.Tests.Integration.Testing protected bool FirstTestInFixture = true; private Stopwatch _stopWatch; private static int _testCount = 1; + private TimeSpan _stopWatchStep1; + private TimeSpan _stopWatchStep2; } } From 7b5012e00a2aa0047d0d265bde054018a7a3185c Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Fri, 16 Oct 2020 09:54:03 +0200 Subject: [PATCH 06/56] Debug info for tests, to debug on Azure Devops Signed-off-by: Bjarke Berg --- .../TestServerTest/UmbracoTestServerTestBase.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Umbraco.Tests.Integration/TestServerTest/UmbracoTestServerTestBase.cs b/src/Umbraco.Tests.Integration/TestServerTest/UmbracoTestServerTestBase.cs index 2aacd7b8fb..aefb5679e5 100644 --- a/src/Umbraco.Tests.Integration/TestServerTest/UmbracoTestServerTestBase.cs +++ b/src/Umbraco.Tests.Integration/TestServerTest/UmbracoTestServerTestBase.cs @@ -20,14 +20,13 @@ using Umbraco.Tests.Testing; using Umbraco.Web; using Umbraco.Web.Common.Builder; using Umbraco.Web.Common.Controllers; -using Umbraco.Web.Editors; using Microsoft.Extensions.Hosting; using Umbraco.Web.BackOffice.Controllers; namespace Umbraco.Tests.Integration.TestServerTest { [TestFixture] - [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest, Logger = UmbracoTestOptions.Logger.Console, Boot = false)] + [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest, Logger = UmbracoTestOptions.Logger.Console, Boot = true)] public abstract class UmbracoTestServerTestBase : UmbracoIntegrationTest { [SetUp] From c72cd2914b6a4f25735b197f299cd225ec196a01 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Fri, 16 Oct 2020 10:45:22 +0200 Subject: [PATCH 07/56] Debug info for tests, to debug on Azure Devops Signed-off-by: Bjarke Berg --- .../Umbraco.Tests.Integration.csproj | 1 + .../create_slicing_filter_condition.sh | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 src/Umbraco.Tests.Integration/create_slicing_filter_condition.sh diff --git a/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj b/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj index 84e0eebd18..4300c7650a 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj +++ b/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj @@ -14,6 +14,7 @@ + diff --git a/src/Umbraco.Tests.Integration/create_slicing_filter_condition.sh b/src/Umbraco.Tests.Integration/create_slicing_filter_condition.sh new file mode 100644 index 0000000000..6b98271147 --- /dev/null +++ b/src/Umbraco.Tests.Integration/create_slicing_filter_condition.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +filterProperty="Name" + +tests=$1 +testCount=${#tests[@]} +totalAgents=$SYSTEM_TOTALJOBSINPHASE +agentNumber=$SYSTEM_JOBPOSITIONINPHASE + +if [ $totalAgents -eq 0 ]; then totalAgents=1; fi +if [ -z "$agentNumber" ]; then agentNumber=1; fi + +echo "Total agents: $totalAgents" +echo "Agent number: $agentNumber" +echo "Total tests: $testCount" + +echo "Target tests:" +for ((i=$agentNumber; i <= $testCount;i=$((i+$totalAgents)))); do +targetTestName=${tests[$i -1]} +echo "$targetTestName" +filter+="|${filterProperty}=${targetTestName}" +done +filter=${filter#"|"} + +echo "##vso[task.setvariable variable=targetTestsFilter]$filter" From 95197f6ae7eedb9df8740eeadfa309a762e399c0 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Fri, 16 Oct 2020 10:45:22 +0200 Subject: [PATCH 08/56] Debug info for tests, to debug on Azure Devops Signed-off-by: Bjarke Berg --- .../Testing/UmbracoIntegrationTest.cs | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs index ad861251ba..461afeabb7 100644 --- a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs +++ b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs @@ -85,25 +85,22 @@ namespace Umbraco.Tests.Integration.Testing FirstTestInFixture = false; FirstTestInSession = false; - _stopWatch.Stop(); - TestContext.Progress.WriteLine($" Total: {_stopWatch.Elapsed}, Step1: {_stopWatchStep1}, Step1: {_stopWatchStep2}"); + TestContext.Progress.Write($" {TestContext.CurrentContext.Result.Outcome.Status}"); } [SetUp] public virtual void Setup() { TestContext.Progress.Write($"Start test {_testCount++}: {TestContext.CurrentContext.Test.Name}"); - _stopWatch = new Stopwatch(); - _stopWatch.Start(); + var hostBuilder = CreateHostBuilder(); var host = hostBuilder.Start(); - _stopWatchStep1 = _stopWatch.Elapsed; + Services = host.Services; var app = new ApplicationBuilder(host.Services); - Configure(app); //Takes around 200 ms - _stopWatchStep2 = _stopWatch.Elapsed; + Configure(app); OnFixtureTearDown(() => host.Dispose()); } @@ -500,9 +497,6 @@ namespace Umbraco.Tests.Integration.Testing protected static bool FirstTestInSession = true; protected bool FirstTestInFixture = true; - private Stopwatch _stopWatch; private static int _testCount = 1; - private TimeSpan _stopWatchStep1; - private TimeSpan _stopWatchStep2; } } From ec66990e72aef5b5d46421409f59fc3a30dc1058 Mon Sep 17 00:00:00 2001 From: Paul Johnson Date: Tue, 27 Oct 2020 10:53:01 +0000 Subject: [PATCH 09/56] NetCore: MSDI refactor phase 2 (#9280) * Moved adapters from Infra -> Core * Allow Composition to accept a service collection instead of an IRegister * Composition no longer takes IRegister as constructor arg all tests passing * Composition no longer implements IRegister * Lose _uniques in Composition * lose Composition OnCreatingFactory actions * Clean up UmbracoCoreServiceCollectionExtensions & Composition Less IFactory * LightInject gone where TFW == netstandard2.0 || TFW == netcoreapp3.1 * Resolve dead code issues * Rename IFactory methods to match IServiceProvider so they can be trivially swapped later. * Rename IFactory methods to match IServiceProvider so they can be trivially swapped later (continued) Thought the counts were low, it's mostly extension method usage --- .../Composing/CollectionBuilderBase.cs | 2 +- .../Composing/ComponentCollectionBuilder.cs | 2 +- src/Umbraco.Core/Composing/Composition.cs | 69 +--- src/Umbraco.Core/Composing/IFactory.cs | 8 +- .../ServiceCollectionRegistryAdapter.cs | 33 +- .../ServiceProviderFactoryAdapter.cs | 49 +++ .../CompositionExtensions_Uniques.cs | 4 +- .../ContentAppFactoryCollectionBuilder.cs | 8 +- .../Dashboards/DashboardCollectionBuilder.cs | 2 +- src/Umbraco.Core/FactoryExtensions.cs | 10 +- .../Sections/SectionCollectionBuilder.cs | 2 +- src/Umbraco.Core/Services/IRuntime.cs | 10 +- ...aseServerRegistrarAndMessengerComponent.cs | 4 +- .../CoreMappingProfiles.cs | 7 +- .../CompositionExtensions/FileSystems.cs | 12 +- .../CompositionExtensions/Installer.cs | 25 +- .../CompositionExtensions/Services.cs | 34 +- .../LightInject/LightInjectContainer.cs | 250 ----------- .../LightInject/LightInjectException.cs | 112 ----- .../MixedLightInjectScopeManagerProvider.cs | 43 -- .../Composing/RegisterFactory.cs | 65 --- .../ServiceProviderFactoryAdapter.cs | 49 --- .../CompositionExtensions_Essentials.cs | 4 +- .../Logging/Viewer/LogViewerComposer.cs | 6 +- .../Mappers/MapperCollectionBuilder.cs | 2 +- .../Runtime/CoreInitialComposer.cs | 45 +- .../Runtime/CoreRuntime.cs | 72 ++-- .../Search/ExamineComposer.cs | 33 +- .../Umbraco.Infrastructure.csproj | 5 - .../Compose/ModelsBuilderComposer.cs | 11 +- .../NuCacheComposer.cs | 9 +- src/Umbraco.Tests.Common/Assertions.cs | 35 -- .../Composing/LightInjectValidation.cs | 319 --------------- .../Composing/ValidationResultExtensions.cs | 107 ----- src/Umbraco.Tests.Common/TestHelperBase.cs | 4 +- .../Testing/UmbracoTestAttribute.cs | 2 +- src/Umbraco.Tests.Integration/RuntimeTests.cs | 9 +- .../UmbracoBuilderExtensions.cs | 5 +- .../Testing/IntegrationTestComposer.cs | 6 +- .../Testing/UmbracoIntegrationTest.cs | 4 +- .../Repositories/RelationRepositoryTest.cs | 4 +- .../Services/ContentServiceTests.cs | 4 + .../Umbraco.Tests.Integration.csproj | 1 - .../TestHelpers/BaseUsingSqlSyntax.cs | 7 +- .../TestHelpers/CompositionExtenions.cs | 18 + .../TestHelpers/TestHelper.cs | 3 +- .../Umbraco.Core/Components/ComponentTests.cs | 30 +- .../Composing/CollectionBuildersTests.cs | 31 +- .../Composing/ContainerConformingTests.cs | 387 ------------------ .../Composing/LazyCollectionBuilderTests.cs | 22 +- .../Composing/PackageActionCollectionTests.cs | 5 +- .../PublishedContentCacheTests.cs | 4 +- .../PublishedMediaCacheTests.cs | 8 +- src/Umbraco.Tests/IO/FileSystemsTests.cs | 32 +- src/Umbraco.Tests/Issues/U9560.cs | 4 +- src/Umbraco.Tests/Models/ContentXmlTest.cs | 2 +- src/Umbraco.Tests/Models/MediaXmlTest.cs | 2 +- .../Packaging/PackageDataInstallationTests.cs | 4 +- .../Packaging/PackageInstallationTest.cs | 8 +- .../Published/ConvertersTests.cs | 18 +- .../PublishedContent/NuCacheChildrenTests.cs | 4 +- .../PublishedContent/NuCacheTests.cs | 4 +- .../PublishedContentSnapshotTestBase.cs | 2 +- .../PublishedContentTestBase.cs | 2 +- .../PublishedContent/PublishedContentTests.cs | 8 +- .../PublishedContent/PublishedMediaTests.cs | 34 +- .../Routing/BaseUrlProviderTest.cs | 3 +- .../Routing/ContentFinderByIdTests.cs | 2 +- .../Routing/DomainsAndCulturesTests.cs | 5 +- .../Routing/RenderRouteHandlerTests.cs | 10 +- .../Routing/UrlsProviderWithDomainsTests.cs | 3 +- .../Routing/UrlsWithNestedDomains.cs | 3 +- .../Runtimes/CoreRuntimeTests.cs | 45 +- .../Scoping/ScopeEventDispatcherTests.cs | 10 +- .../Scoping/ScopedNuCacheTests.cs | 4 +- src/Umbraco.Tests/Scoping/ScopedXmlTests.cs | 2 +- .../TestHelpers/BaseUsingSqlCeSyntax.cs | 10 +- src/Umbraco.Tests/TestHelpers/BaseWebTest.cs | 10 +- .../Stubs/TestControllerFactory.cs | 2 +- .../TestHelpers/TestObjects-Mocks.cs | 2 +- src/Umbraco.Tests/TestHelpers/TestObjects.cs | 6 +- .../TestHelpers/TestWithDatabaseBase.cs | 31 +- .../Testing/TestingTests/MockTests.cs | 3 +- src/Umbraco.Tests/Testing/UmbracoTestBase.cs | 69 ++-- src/Umbraco.Tests/UmbracoExamine/IndexTest.cs | 12 +- .../UmbracoExamine/SearchTests.cs | 2 +- src/Umbraco.Tests/Web/UmbracoHelperTests.cs | 2 +- .../Extensions/WebMappingProfiles.cs | 5 +- .../Runtime/BackOfficeComposer.cs | 11 +- .../Builder/UmbracoBuilderExtensions.cs | 2 +- .../ApplicationBuilderExtensions.cs | 6 +- .../UmbracoCoreServiceCollectionExtensions.cs | 27 +- .../Runtime/AspNetCoreComposer.cs | 3 +- .../RuntimeMinification/SmidgeComposer.cs | 5 +- .../Views/Partials/Grid/Editors/Rte.cshtml | 6 +- src/Umbraco.Web/Composing/Current.cs | 96 ++--- src/Umbraco.Web/Composing/ModuleInjector.cs | 4 +- src/Umbraco.Web/CompositionExtensions.cs | 33 +- .../EnsurePublishedContentRequestAttribute.cs | 4 +- src/Umbraco.Web/Mvc/PluginController.cs | 10 +- src/Umbraco.Web/Mvc/RenderRouteHandler.cs | 2 +- .../Mvc/UmbracoViewPageOfTModel.cs | 8 +- .../Mvc/UmbracoVirtualNodeRouteHandler.cs | 2 +- src/Umbraco.Web/PublishedContentExtensions.cs | 4 +- src/Umbraco.Web/Runtime/WebInitialComposer.cs | 26 +- src/Umbraco.Web/Umbraco.Web.csproj | 2 +- src/Umbraco.Web/UmbracoApplicationBase.cs | 14 +- src/Umbraco.Web/UmbracoDefaultOwinStartup.cs | 6 +- .../Filters/FeatureAuthorizeAttribute.cs | 2 +- .../WebApi/HttpActionContextExtensions.cs | 2 +- .../WebApi/UmbracoApiControllerBase.cs | 18 +- 111 files changed, 662 insertions(+), 1998 deletions(-) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Composing/ServiceCollectionRegistryAdapter.cs (66%) create mode 100644 src/Umbraco.Core/Composing/ServiceProviderFactoryAdapter.cs delete mode 100644 src/Umbraco.Infrastructure/Composing/LightInject/LightInjectContainer.cs delete mode 100644 src/Umbraco.Infrastructure/Composing/LightInject/LightInjectException.cs delete mode 100644 src/Umbraco.Infrastructure/Composing/LightInject/MixedLightInjectScopeManagerProvider.cs delete mode 100644 src/Umbraco.Infrastructure/Composing/RegisterFactory.cs delete mode 100644 src/Umbraco.Infrastructure/Composing/ServiceProviderFactoryAdapter.cs delete mode 100644 src/Umbraco.Tests.Common/Assertions.cs delete mode 100644 src/Umbraco.Tests.Common/Composing/LightInjectValidation.cs delete mode 100644 src/Umbraco.Tests.Common/Composing/ValidationResultExtensions.cs create mode 100644 src/Umbraco.Tests.UnitTests/TestHelpers/CompositionExtenions.cs delete mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/ContainerConformingTests.cs diff --git a/src/Umbraco.Core/Composing/CollectionBuilderBase.cs b/src/Umbraco.Core/Composing/CollectionBuilderBase.cs index ca2bac3905..2b47ba2a86 100644 --- a/src/Umbraco.Core/Composing/CollectionBuilderBase.cs +++ b/src/Umbraco.Core/Composing/CollectionBuilderBase.cs @@ -108,7 +108,7 @@ namespace Umbraco.Core.Composing /// Creates a collection item. /// protected virtual TItem CreateItem(IFactory factory, Type itemType) - => (TItem) factory.GetInstance(itemType); + => (TItem) factory.GetRequiredService(itemType); /// /// Creates a collection. diff --git a/src/Umbraco.Core/Composing/ComponentCollectionBuilder.cs b/src/Umbraco.Core/Composing/ComponentCollectionBuilder.cs index 47968d3568..05e627b41e 100644 --- a/src/Umbraco.Core/Composing/ComponentCollectionBuilder.cs +++ b/src/Umbraco.Core/Composing/ComponentCollectionBuilder.cs @@ -20,7 +20,7 @@ namespace Umbraco.Core.Composing protected override IEnumerable CreateItems(IFactory factory) { - _logger = factory.GetInstance(); + _logger = factory.GetRequiredService(); using (_logger.DebugDuration($"Creating components. (log when >{LogThresholdMilliseconds}ms)", "Created.")) { diff --git a/src/Umbraco.Core/Composing/Composition.cs b/src/Umbraco.Core/Composing/Composition.cs index 4ebc8c8f7e..66e6e03e8e 100644 --- a/src/Umbraco.Core/Composing/Composition.cs +++ b/src/Umbraco.Core/Composing/Composition.cs @@ -1,9 +1,14 @@ using System; using System.Collections.Generic; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; using Umbraco.Core.Cache; using Umbraco.Core.Configuration; using Umbraco.Core.IO; using Umbraco.Core.Logging; +using Umbraco.Infrastructure.Composing; + +using NoFactory = Umbraco.Infrastructure.Composing.ServiceProviderFactoryAdapter; namespace Umbraco.Core.Composing { @@ -15,25 +20,14 @@ namespace Umbraco.Core.Composing /// avoid accessing the container. This is because everything needs to be properly registered and with /// the proper lifecycle. These methods will take care of it. Directly registering into the container /// may cause issues. - public class Composition : IRegister + public class Composition { private readonly Dictionary _builders = new Dictionary(); - private readonly Dictionary> _uniques = new Dictionary>(); - private readonly IRegister _register; + private IRegister _register => ServiceCollectionRegistryAdapter.Wrap(Services); - /// - /// Initializes a new instance of the class. - /// - /// A register. - /// A type loader. - /// A logger. - /// The runtime state. - /// Optional configs. - /// An IOHelper - /// - public Composition(IRegister register, TypeLoader typeLoader, IProfilingLogger logger, IRuntimeState runtimeState, IIOHelper ioHelper, AppCaches appCaches) + public Composition(IServiceCollection services, TypeLoader typeLoader, IProfilingLogger logger, IRuntimeState runtimeState, IIOHelper ioHelper, AppCaches appCaches) { - _register = register ?? throw new ArgumentNullException(nameof(register)); + Services = services ?? throw new ArgumentNullException(nameof(services)); TypeLoader = typeLoader ?? throw new ArgumentNullException(nameof(typeLoader)); Logger = logger ?? throw new ArgumentNullException(nameof(logger)); RuntimeState = runtimeState ?? throw new ArgumentNullException(nameof(runtimeState)); @@ -51,6 +45,8 @@ namespace Umbraco.Core.Composing public IIOHelper IOHelper { get; } public AppCaches AppCaches { get; } + public IServiceCollection Services { get; } + /// /// Gets the type loader. /// @@ -84,56 +80,23 @@ namespace Umbraco.Core.Composing /// - public IFactory CreateFactory() + public void RegisterBuilders() { - foreach (var onCreating in OnCreatingFactory.Values) - onCreating(); - - foreach (var unique in _uniques.Values) - unique(_register); - _uniques.Clear(); // no point keep them around - foreach (var builder in _builders.Values) builder.RegisterWith(_register); _builders.Clear(); // no point keep them around - - return _register.CreateFactory(); } - /// - /// Gets a dictionary of action to execute when creating the factory. - /// - public Dictionary OnCreatingFactory { get; } = new Dictionary(); - #endregion #region Unique - - private string GetUniqueName() - => GetUniqueName(typeof(TService)); - - private string GetUniqueName(Type serviceType) - => serviceType.FullName; - - private string GetUniqueName() - => GetUniqueName(typeof(TService), typeof(TTarget)); - - private string GetUniqueName(Type serviceType, Type targetType) - => serviceType.FullName + "::" + targetType.FullName; - - /// - /// Registers a unique service as its own implementation. - /// - /// Unique services have one single implementation, and a Singleton lifetime. - public void RegisterUnique(Type serviceType) - => _uniques[GetUniqueName(serviceType)] = register => register.Register(serviceType, Lifetime.Singleton); - + /// /// Registers a unique service with an implementation type. /// /// Unique services have one single implementation, and a Singleton lifetime. public void RegisterUnique(Type serviceType, Type implementingType) - => _uniques[GetUniqueName(serviceType)] = register => register.Register(serviceType, implementingType, Lifetime.Singleton); + => Services.Replace(ServiceDescriptor.Singleton(serviceType, implementingType)); /// /// Registers a unique service with an implementation factory. @@ -141,14 +104,14 @@ namespace Umbraco.Core.Composing /// Unique services have one single implementation, and a Singleton lifetime. public void RegisterUnique(Func factory) where TService : class - => _uniques[GetUniqueName()] = register => register.Register(factory, Lifetime.Singleton); + => Services.Replace(ServiceDescriptor.Singleton(sp => factory(NoFactory.Wrap(sp)))); /// /// Registers a unique service with an implementing instance. /// /// Unique services have one single implementation, and a Singleton lifetime. public void RegisterUnique(Type serviceType, object instance) - => _uniques[GetUniqueName(serviceType)] = register => register.Register(serviceType, instance); + => Services.Replace(ServiceDescriptor.Singleton(serviceType, instance)); #endregion diff --git a/src/Umbraco.Core/Composing/IFactory.cs b/src/Umbraco.Core/Composing/IFactory.cs index c53e523967..7a2af7756e 100644 --- a/src/Umbraco.Core/Composing/IFactory.cs +++ b/src/Umbraco.Core/Composing/IFactory.cs @@ -19,7 +19,7 @@ namespace Umbraco.Core.Composing /// The type of the service. /// An instance of the specified type. /// Throws an exception if the container failed to get an instance of the specified type. - object GetInstance(Type type); + object GetRequiredService(Type type); /// /// Tries to get an instance of a service. @@ -29,19 +29,19 @@ namespace Umbraco.Core.Composing /// Returns null if the container does not know how to get an instance /// of the specified type. Throws an exception if the container does know how /// to get an instance of the specified type, but failed to do so. - object TryGetInstance(Type type); + object GetService(Type type); /// /// Gets all instances of a service. /// /// The type of the service. - IEnumerable GetAllInstances(Type serviceType); + IEnumerable GetServices(Type serviceType); /// /// Gets all instances of a service. /// /// The type of the service. - IEnumerable GetAllInstances() + IEnumerable GetServices() where TService : class; /// diff --git a/src/Umbraco.Infrastructure/Composing/ServiceCollectionRegistryAdapter.cs b/src/Umbraco.Core/Composing/ServiceCollectionRegistryAdapter.cs similarity index 66% rename from src/Umbraco.Infrastructure/Composing/ServiceCollectionRegistryAdapter.cs rename to src/Umbraco.Core/Composing/ServiceCollectionRegistryAdapter.cs index d0ff384cb1..7058ba1e5d 100644 --- a/src/Umbraco.Infrastructure/Composing/ServiceCollectionRegistryAdapter.cs +++ b/src/Umbraco.Core/Composing/ServiceCollectionRegistryAdapter.cs @@ -6,12 +6,12 @@ namespace Umbraco.Infrastructure.Composing { public class ServiceCollectionRegistryAdapter : IRegister { - private readonly IServiceCollection _services; + public IServiceCollection Services { get; } public ServiceCollectionRegistryAdapter(IServiceCollection services) { - _services = services ?? throw new ArgumentNullException(nameof(services)); - _services.AddTransient(typeof(Lazy<>), typeof(LazyResolve<>)); + Services = services ?? throw new ArgumentNullException(nameof(services)); + Services.AddTransient(typeof(Lazy<>), typeof(LazyResolve<>)); } public void Register(Type serviceType, Lifetime lifetime = Lifetime.Transient) @@ -20,13 +20,13 @@ namespace Umbraco.Infrastructure.Composing { case Lifetime.Request: case Lifetime.Scope: - _services.AddScoped(serviceType); + Services.AddScoped(serviceType); break; case Lifetime.Transient: - _services.AddTransient(serviceType); + Services.AddTransient(serviceType); break; case Lifetime.Singleton: - _services.AddSingleton(serviceType); + Services.AddSingleton(serviceType); break; default: throw new NotImplementedException($"Unhandled Lifetime: {lifetime}"); @@ -39,13 +39,13 @@ namespace Umbraco.Infrastructure.Composing { case Lifetime.Request: case Lifetime.Scope: - _services.AddScoped(serviceType, implementingType); + Services.AddScoped(serviceType, implementingType); break; case Lifetime.Transient: - _services.AddTransient(serviceType, implementingType); + Services.AddTransient(serviceType, implementingType); break; case Lifetime.Singleton: - _services.AddSingleton(serviceType, implementingType); + Services.AddSingleton(serviceType, implementingType); break; default: throw new NotImplementedException($"Unhandled Lifetime: {lifetime}"); @@ -58,13 +58,13 @@ namespace Umbraco.Infrastructure.Composing { case Lifetime.Request: case Lifetime.Scope: - _services.AddScoped(sp => factory(ServiceProviderFactoryAdapter.Wrap(sp))); + Services.AddScoped(sp => factory(ServiceProviderFactoryAdapter.Wrap(sp))); break; case Lifetime.Transient: - _services.AddTransient(sp => factory(ServiceProviderFactoryAdapter.Wrap(sp))); + Services.AddTransient(sp => factory(ServiceProviderFactoryAdapter.Wrap(sp))); break; case Lifetime.Singleton: - _services.AddSingleton(sp => factory(ServiceProviderFactoryAdapter.Wrap(sp))); + Services.AddSingleton(sp => factory(ServiceProviderFactoryAdapter.Wrap(sp))); break; default: throw new NotImplementedException($"Unhandled Lifetime: {lifetime}"); @@ -72,12 +72,17 @@ namespace Umbraco.Infrastructure.Composing } public void Register(Type serviceType, object instance) { - _services.AddSingleton(serviceType, instance); + Services.AddSingleton(serviceType, instance); } public IFactory CreateFactory() { - return ServiceProviderFactoryAdapter.Wrap(_services.BuildServiceProvider()); + return ServiceProviderFactoryAdapter.Wrap(Services.BuildServiceProvider()); + } + + public static IRegister Wrap(IServiceCollection services) + { + return new ServiceCollectionRegistryAdapter(services); } } diff --git a/src/Umbraco.Core/Composing/ServiceProviderFactoryAdapter.cs b/src/Umbraco.Core/Composing/ServiceProviderFactoryAdapter.cs new file mode 100644 index 0000000000..eb53880ee2 --- /dev/null +++ b/src/Umbraco.Core/Composing/ServiceProviderFactoryAdapter.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Core.Composing; + +namespace Umbraco.Infrastructure.Composing +{ + public class ServiceProviderFactoryAdapter : IFactory + { + public IServiceProvider ServiceProvider { get; } + + private ServiceProviderFactoryAdapter(IServiceProvider serviceProvider) + { + ServiceProvider = serviceProvider; + } + + public object Concrete => ServiceProvider; + + public object GetRequiredService(Type type) + { + return ServiceProvider.GetRequiredService(type); + } + + public object GetService(Type type) + { + return ServiceProvider.GetService(type); + } + + public IEnumerable GetServices(Type serviceType) + { + return ServiceProvider.GetServices(serviceType); + } + + public IEnumerable GetServices() where TService : class + { + return ServiceProvider.GetServices(); + } + + public IDisposable BeginScope() + { + return ServiceProvider.CreateScope(); + } + + public static IFactory Wrap(IServiceProvider serviceProvider) + { + return new ServiceProviderFactoryAdapter(serviceProvider); + } + } +} diff --git a/src/Umbraco.Core/CompositionExtensions_Uniques.cs b/src/Umbraco.Core/CompositionExtensions_Uniques.cs index cc08889c2d..11d4877aca 100644 --- a/src/Umbraco.Core/CompositionExtensions_Uniques.cs +++ b/src/Umbraco.Core/CompositionExtensions_Uniques.cs @@ -36,8 +36,8 @@ namespace Umbraco.Core where TService2 : class { composition.RegisterUnique(); - composition.RegisterUnique(factory => factory.GetInstance()); - composition.RegisterUnique(factory => factory.GetInstance()); + composition.RegisterUnique(factory => factory.GetRequiredService()); + composition.RegisterUnique(factory => factory.GetRequiredService()); } } } diff --git a/src/Umbraco.Core/ContentApps/ContentAppFactoryCollectionBuilder.cs b/src/Umbraco.Core/ContentApps/ContentAppFactoryCollectionBuilder.cs index 0e2c8e2f55..4e1c7d8693 100644 --- a/src/Umbraco.Core/ContentApps/ContentAppFactoryCollectionBuilder.cs +++ b/src/Umbraco.Core/ContentApps/ContentAppFactoryCollectionBuilder.cs @@ -18,8 +18,8 @@ namespace Umbraco.Web.ContentApps public override ContentAppFactoryCollection CreateCollection(IFactory factory) { // get the logger factory just-in-time - see note below for manifest parser - var loggerFactory = factory.GetInstance(); - var umbracoContextAccessor = factory.GetInstance(); + var loggerFactory = factory.GetRequiredService(); + var umbracoContextAccessor = factory.GetRequiredService(); return new ContentAppFactoryCollection(CreateItems(factory), loggerFactory.CreateLogger(), umbracoContextAccessor); } @@ -28,8 +28,8 @@ namespace Umbraco.Web.ContentApps // get the manifest parser just-in-time - injecting it in the ctor would mean that // simply getting the builder in order to configure the collection, would require // its dependencies too, and that can create cycles or other oddities - var manifestParser = factory.GetInstance(); - var ioHelper = factory.GetInstance(); + var manifestParser = factory.GetRequiredService(); + var ioHelper = factory.GetRequiredService(); return base.CreateItems(factory).Concat(manifestParser.Manifest.ContentApps.Select(x => new ManifestContentAppFactory(x, ioHelper))); } } diff --git a/src/Umbraco.Core/Dashboards/DashboardCollectionBuilder.cs b/src/Umbraco.Core/Dashboards/DashboardCollectionBuilder.cs index a903d15abb..8bad0cb23c 100644 --- a/src/Umbraco.Core/Dashboards/DashboardCollectionBuilder.cs +++ b/src/Umbraco.Core/Dashboards/DashboardCollectionBuilder.cs @@ -31,7 +31,7 @@ namespace Umbraco.Web.Dashboards // get the manifest parser just-in-time - injecting it in the ctor would mean that // simply getting the builder in order to configure the collection, would require // its dependencies too, and that can create cycles or other oddities - var manifestParser = factory.GetInstance(); + var manifestParser = factory.GetRequiredService(); var dashboardSections = Merge(base.CreateItems(factory), manifestParser.Manifest.Dashboards); diff --git a/src/Umbraco.Core/FactoryExtensions.cs b/src/Umbraco.Core/FactoryExtensions.cs index 8ae2f76af3..0a5c04c98f 100644 --- a/src/Umbraco.Core/FactoryExtensions.cs +++ b/src/Umbraco.Core/FactoryExtensions.cs @@ -18,9 +18,9 @@ namespace Umbraco.Core /// The factory. /// An instance of the specified type. /// Throws an exception if the factory failed to get an instance of the specified type. - public static T GetInstance(this IFactory factory) + public static T GetRequiredService(this IFactory factory) where T : class - => (T)factory.GetInstance(typeof(T)); + => (T)factory.GetRequiredService(typeof(T)); /// /// Tries to get an instance of a service. @@ -30,9 +30,9 @@ namespace Umbraco.Core /// Returns null if the factory does not know how to get an instance /// of the specified type. Throws an exception if the factory does know how /// to get an instance of the specified type, but failed to do so. - public static T TryGetInstance(this IFactory factory) + public static T GetService(this IFactory factory) where T : class - => (T)factory.TryGetInstance(typeof(T)); + => (T)factory.GetService(typeof(T)); /// /// Creates an instance with arguments. @@ -96,7 +96,7 @@ namespace Umbraco.Core else { // None of the provided arguments is suitable: get an instance from the factory - ctorArgs[i++] = factory.GetInstance(parameter.ParameterType); + ctorArgs[i++] = factory.GetRequiredService(parameter.ParameterType); } } return ctor.Invoke(ctorArgs); diff --git a/src/Umbraco.Core/Sections/SectionCollectionBuilder.cs b/src/Umbraco.Core/Sections/SectionCollectionBuilder.cs index de883db83a..d122816949 100644 --- a/src/Umbraco.Core/Sections/SectionCollectionBuilder.cs +++ b/src/Umbraco.Core/Sections/SectionCollectionBuilder.cs @@ -16,7 +16,7 @@ namespace Umbraco.Web.Sections // get the manifest parser just-in-time - injecting it in the ctor would mean that // simply getting the builder in order to configure the collection, would require // its dependencies too, and that can create cycles or other oddities - var manifestParser = factory.GetInstance(); + var manifestParser = factory.GetRequiredService(); return base.CreateItems(factory).Concat(manifestParser.Manifest.Sections); } diff --git a/src/Umbraco.Core/Services/IRuntime.cs b/src/Umbraco.Core/Services/IRuntime.cs index 4715068073..ff533be76e 100644 --- a/src/Umbraco.Core/Services/IRuntime.cs +++ b/src/Umbraco.Core/Services/IRuntime.cs @@ -1,4 +1,6 @@ -using Umbraco.Core.Composing; +using System; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Core.Composing; using Umbraco.Core.Configuration; namespace Umbraco.Core @@ -11,16 +13,14 @@ namespace Umbraco.Core /// /// Boots the runtime. /// - /// The application register. - /// The application factory. - IFactory Configure(IRegister register); + void Configure(IServiceCollection services); /// /// Gets the runtime state. /// IRuntimeState State { get; } - void Start(); + void Start(IServiceProvider serviceProvider); /// /// Terminates the runtime. diff --git a/src/Umbraco.Infrastructure/Compose/DatabaseServerRegistrarAndMessengerComponent.cs b/src/Umbraco.Infrastructure/Compose/DatabaseServerRegistrarAndMessengerComponent.cs index 096c5d5686..420730d779 100644 --- a/src/Umbraco.Infrastructure/Compose/DatabaseServerRegistrarAndMessengerComponent.cs +++ b/src/Umbraco.Infrastructure/Compose/DatabaseServerRegistrarAndMessengerComponent.cs @@ -46,7 +46,7 @@ namespace Umbraco.Web.Compose //rebuild the xml cache file if the server is not synced () => { - var publishedSnapshotService = factory.GetInstance(); + var publishedSnapshotService = factory.GetRequiredService(); // rebuild the published snapshot caches entirely, if the server is not synced // this is equivalent to DistributedCache RefreshAll... but local only @@ -62,7 +62,7 @@ namespace Umbraco.Web.Compose // indexes then they can adjust this logic themselves. () => { - var indexRebuilder = factory.GetInstance(); + var indexRebuilder = factory.GetRequiredService(); indexRebuilder.RebuildIndexes(false, 5000); } } diff --git a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/CoreMappingProfiles.cs b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/CoreMappingProfiles.cs index 057dad0da6..fc2f8c9e88 100644 --- a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/CoreMappingProfiles.cs +++ b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/CoreMappingProfiles.cs @@ -1,4 +1,5 @@ -using Umbraco.Core.BackOffice; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Core.BackOffice; using Umbraco.Core.Mapping; using Umbraco.Web.Models.Mapping; @@ -36,8 +37,8 @@ namespace Umbraco.Core.Composing.CompositionExtensions .Add() ; - composition.Register(); - composition.Register(); + composition.Services.AddTransient(); + composition.Services.AddTransient(); return composition; } diff --git a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/FileSystems.cs b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/FileSystems.cs index adba706d13..b19558ef44 100644 --- a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/FileSystems.cs +++ b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/FileSystems.cs @@ -39,7 +39,7 @@ namespace Umbraco.Core.Composing.CompositionExtensions composition.RegisterUnique(factory => factory.CreateInstance(factory)); // register IFileSystems, which gives access too all filesystems - composition.RegisterUnique(factory => factory.GetInstance()); + composition.RegisterUnique(factory => factory.GetRequiredService()); // register the scheme for media paths composition.RegisterUnique(); @@ -47,16 +47,16 @@ namespace Umbraco.Core.Composing.CompositionExtensions // register the default IMediaFileSystem implementation composition.RegisterUnique(factory => { - var ioHelper = factory.GetInstance(); - var hostingEnvironment = factory.GetInstance(); - var logger = factory.GetInstance>(); - var globalSettings = factory.GetInstance>().Value; + var ioHelper = factory.GetRequiredService(); + var hostingEnvironment = factory.GetRequiredService(); + var logger = factory.GetRequiredService>(); + var globalSettings = factory.GetRequiredService>().Value; var rootPath = hostingEnvironment.MapPathWebRoot(globalSettings.UmbracoMediaPath); var rootUrl = hostingEnvironment.ToAbsolute(globalSettings.UmbracoMediaPath); var inner = new PhysicalFileSystem(ioHelper, hostingEnvironment, logger, rootPath, rootUrl); - var fileSystems = factory.GetInstance(); + var fileSystems = factory.GetRequiredService(); return fileSystems.GetFileSystem(inner); }); diff --git a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Installer.cs b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Installer.cs index d49d1b4783..403e13816e 100644 --- a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Installer.cs +++ b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Installer.cs @@ -1,4 +1,5 @@ -using Umbraco.Core; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Web.Install; using Umbraco.Web.Install.InstallSteps; @@ -12,21 +13,21 @@ namespace Umbraco.Web.Composing.CompositionExtensions { // register the installer steps - composition.Register(Lifetime.Scope); - composition.Register(Lifetime.Scope); - composition.Register(Lifetime.Scope); - composition.Register(Lifetime.Scope); - composition.Register(Lifetime.Scope); - composition.Register(Lifetime.Scope); + composition.Services.AddScoped(); + composition.Services.AddScoped(); + composition.Services.AddScoped(); + composition.Services.AddScoped(); + composition.Services.AddScoped(); + composition.Services.AddScoped(); // TODO: Add these back once we have a compatible Starter kit - // composition.Register(Lifetime.Scope); - // composition.Register(Lifetime.Scope); - // composition.Register(Lifetime.Scope); + // composition.Services.AddScoped(); + // composition.Services.AddScoped(); + // composition.Services.AddScoped(); - composition.Register(Lifetime.Scope); + composition.Services.AddScoped(); - composition.Register(); + composition.Services.AddTransient(); composition.RegisterUnique(); return composition; diff --git a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Services.cs b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Services.cs index a4744d3d2d..37c0bae384 100644 --- a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Services.cs +++ b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Services.cs @@ -60,8 +60,8 @@ namespace Umbraco.Core.Composing.CompositionExtensions composition.RegisterUnique(); composition.Register(SourcesFactory); composition.RegisterUnique(factory => new LocalizedTextService( - factory.GetInstance>(), - factory.GetInstance>())); + factory.GetRequiredService>(), + factory.GetRequiredService>())); composition.RegisterUnique(); @@ -86,23 +86,23 @@ namespace Umbraco.Core.Composing.CompositionExtensions /// private static PackagesRepository CreatePackageRepository(IFactory factory, string packageRepoFileName) => new PackagesRepository( - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance>(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService>(), packageRepoFileName); private static LocalizedTextServiceFileSources SourcesFactory(IFactory container) { - var hostingEnvironment = container.GetInstance(); - var globalSettings = container.GetInstance>().Value; + var hostingEnvironment = container.GetRequiredService(); + var globalSettings = container.GetRequiredService>().Value; var mainLangFolder = new DirectoryInfo(hostingEnvironment.MapPathContentRoot(WebPath.Combine(globalSettings.UmbracoPath , "config","lang"))); var appPlugins = new DirectoryInfo(hostingEnvironment.MapPathContentRoot(Constants.SystemDirectories.AppPlugins)); var configLangFolder = new DirectoryInfo(hostingEnvironment.MapPathContentRoot(WebPath.Combine(Constants.SystemDirectories.Config ,"lang"))); @@ -122,8 +122,8 @@ namespace Umbraco.Core.Composing.CompositionExtensions .Select(x => new LocalizedTextServiceSupplementaryFileSource(x, true)); return new LocalizedTextServiceFileSources( - container.GetInstance>(), - container.GetInstance(), + container.GetRequiredService>(), + container.GetRequiredService(), mainLangFolder, pluginLangFolders.Concat(userLangFolders)); } diff --git a/src/Umbraco.Infrastructure/Composing/LightInject/LightInjectContainer.cs b/src/Umbraco.Infrastructure/Composing/LightInject/LightInjectContainer.cs deleted file mode 100644 index 3537230c2b..0000000000 --- a/src/Umbraco.Infrastructure/Composing/LightInject/LightInjectContainer.cs +++ /dev/null @@ -1,250 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Threading; -using LightInject; - -namespace Umbraco.Core.Composing.LightInject -{ - /// - /// Implements DI with LightInject. - /// - public class LightInjectContainer : IRegister, IFactory, IDisposable - { - private int _disposed; - - /// - /// Initializes a new instance of the with a LightInject container. - /// - public LightInjectContainer(ServiceContainer container) - { - Container = ConfigureContainer(container); - } - - //TODO: The Create methods can die when net framework is gone - - /// - /// Creates a new instance of the class. - /// - public static LightInjectContainer Create() - => new LightInjectContainer(CreateServiceContainer()); - - /// - /// Creates a new instance of the LightInject service container. - /// - protected static ServiceContainer CreateServiceContainer() - { - var container = new ServiceContainer(new ContainerOptions { EnablePropertyInjection = false }); - ConfigureContainer(container); - return container; - } - - private static ServiceContainer ConfigureContainer(ServiceContainer container) - { - // note: the block below is disabled, as it is too LightInject-specific - // - // supports annotated constructor injections - // eg to specify the service name on some services - //container.EnableAnnotatedConstructorInjection(); - - // note: the block below is disabled, we do not allow property injection at all anymore - // (see options in CreateServiceContainer) - // - // from the docs: "LightInject considers all read/write properties a dependency, but implements - // a loose strategy around property dependencies, meaning that it will NOT throw an exception - // in the case of an unresolved property dependency." - // - // in Umbraco we do NOT want to do property injection by default, so we have to disable it. - // from the docs, the following line will cause the container to "now only try to inject - // dependencies for properties that is annotated with the InjectAttribute." - // - // could not find it documented, but tests & code review shows that LightInject considers a - // property to be "injectable" when its setter exists and is not static, nor private, nor - // it is an index property. which means that eg protected or internal setters are OK. - //Container.EnableAnnotatedPropertyInjection(); - - // ensure that we do *not* scan assemblies - // we explicitly RegisterFrom our own composition roots and don't want them scanned - container.AssemblyScanner = new AssemblyScanner(/*container.AssemblyScanner*/); - - // see notes in MixedLightInjectScopeManagerProvider - container.ScopeManagerProvider = new MixedLightInjectScopeManagerProvider(); - - // note: the block below is disabled, because it does not work, because collection builders - // are singletons, and constructor dependencies don't work on singletons, see - // https://github.com/seesharper/LightInject/issues/294 - // - // if looking for a IContainer, and one was passed in args, use it - // this is for collection builders which require the IContainer - //container.RegisterConstructorDependency((c, i, a) => a.OfType().FirstOrDefault()); - // - // and, the block below is also disabled, because it is ugly - // - //// which means that the only way to inject the container into builders is to register it - //container.RegisterInstance(this); - // - // instead, we use an explicit GetInstance with arguments implementation - - return container; - } - - /// - /// Gets the LightInject container. - /// - public ServiceContainer Container { get; } - - /// - /// - public object Concrete => Container; - - /// - public void Dispose() - { - if (Interlocked.Exchange(ref _disposed, 1) == 1) - return; - - Container.Dispose(); - } - - /// - public IFactory CreateFactory() => this; - - private static string GetTargetedServiceName() => "TARGET:" + typeof(TTarget).FullName; - - #region Factory - - /// - public object GetInstance(Type type) - => Container.GetInstance(type); - - /// - public TService GetInstanceFor() - => Container.GetInstance(GetTargetedServiceName()); - - /// - public object TryGetInstance(Type type) - => Container.TryGetInstance(type); - - /// - public IEnumerable GetAllInstances() - where T : class - => Container.GetAllInstances(); - - /// - public IEnumerable GetAllInstances(Type type) - => Container.GetAllInstances(type); - - /// - public void Release(object instance) - { - // nothing to release with LightInject - } - - // notes: - // we may want to look into MS code, eg: - // TypeActivatorCache in MVC at https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.Core/Internal/TypeActivatorCache.cs - // which relies onto - // ActivatorUtilities at https://github.com/aspnet/DependencyInjection/blob/master/shared/Microsoft.Extensions.ActivatorUtilities.Sources/ActivatorUtilities.cs - - #endregion - - #region Registry - - /// - public void Register(Type serviceType, Lifetime lifetime = Lifetime.Transient) - => Container.Register(serviceType, GetLifetime(lifetime)); - - /// - public void Register(Type serviceType, Type implementingType, Lifetime lifetime = Lifetime.Transient) - { - switch (lifetime) - { - case Lifetime.Transient: - Container.Register(serviceType, implementingType, implementingType.Name); - break; - case Lifetime.Request: - case Lifetime.Scope: - case Lifetime.Singleton: - Container.Register(serviceType, implementingType, GetLifetime(lifetime)); - break; - default: - throw new NotSupportedException($"Lifetime {lifetime} is not supported."); - } - } - - /// - public void Register(Func factory, Lifetime lifetime = Lifetime.Transient) - where TService : class - { - Container.Register(f => factory(this), GetLifetime(lifetime)); - } - - /// - public void Register(Type serviceType, object instance) - => Container.RegisterInstance(serviceType, instance); - - private ILifetime GetLifetime(Lifetime lifetime) - { - switch (lifetime) - { - case Lifetime.Transient: - return null; - case Lifetime.Request: - return new PerRequestLifeTime(); - case Lifetime.Scope: - return new PerScopeLifetime(); - case Lifetime.Singleton: - return new PerContainerLifetime(); - default: - throw new NotSupportedException($"Lifetime {lifetime} is not supported."); - } - } - - /// - public void RegisterAuto(Type serviceBaseType) - { - Container.RegisterFallback((serviceType, serviceName) => - { - // https://github.com/seesharper/LightInject/issues/173 - if (serviceBaseType.IsAssignableFromGtd(serviceType)) - Container.Register(serviceType); - return false; - }, null); - } - - #endregion - - #region Control - - /// - public IDisposable BeginScope() - => Container.BeginScope(); - - /// - public virtual void ConfigureForWeb() - { } - - /// - public virtual void EnablePerWebRequestScope() - { - if (!(Container.ScopeManagerProvider is MixedLightInjectScopeManagerProvider smp)) - throw new Exception("Container.ScopeManagerProvider is not MixedLightInjectScopeManagerProvider."); - smp.EnablePerWebRequestScope(new PerLogicalCallContextScopeManagerProvider()); - } - - private class AssemblyScanner : IAssemblyScanner - { - public void Scan(Assembly assembly, IServiceRegistry serviceRegistry, Func lifetime, Func shouldRegister, Func serviceNameProvider) - { - // nothing - we don't want LightInject to scan - } - - public void Scan(Assembly assembly, IServiceRegistry serviceRegistry) - { - // nothing - we don't want LightInject to scan - } - } - - #endregion - } -} diff --git a/src/Umbraco.Infrastructure/Composing/LightInject/LightInjectException.cs b/src/Umbraco.Infrastructure/Composing/LightInject/LightInjectException.cs deleted file mode 100644 index e1344468f9..0000000000 --- a/src/Umbraco.Infrastructure/Composing/LightInject/LightInjectException.cs +++ /dev/null @@ -1,112 +0,0 @@ -using System; -using System.Runtime.Serialization; -using System.Text; - -namespace Umbraco.Core.Composing.LightInject -{ - /// - /// Represents errors that occur due to LightInject. - /// - /// - [Serializable] - public class LightInjectException : Exception - { - private const string LightInjectUnableToResolveType = "Unable to resolve type:"; - private const string LightInjectUnresolvedDependency = "Unresolved dependency "; - private const string LightInjectRequestedDependency = "[Requested dependency:"; - - /// - /// Initializes a new instance of the class. - /// - public LightInjectException() - { } - - /// - /// Initializes a new instance of the class. - /// - /// The message that describes the error. - public LightInjectException(string message) - : base(message) - { } - - /// - /// Initializes a new instance of the class. - /// - /// The error message that explains the reason for the exception. - /// The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified. - public LightInjectException(string message, Exception innerException) - : base(message, innerException) - { } - - /// - /// Initializes a new instance of the class. - /// - /// The that holds the serialized object data about the exception being thrown. - /// The that contains contextual information about the source or destination. - protected LightInjectException(SerializationInfo info, StreamingContext context) - : base(info, context) - { } - - /// - /// Tries to throw the exception with additional details. - /// - /// The exception. - /// - public static void TryThrow(Exception e) - { - var ex = e as InvalidOperationException; - if (ex == null || ex.Message.StartsWith(LightInjectUnableToResolveType) == false) - return; - - var sb = new StringBuilder(); - sb.AppendLine("Unresolved type: " + ex.Message.Substring(LightInjectUnableToResolveType.Length)); - WriteDetails(ex, sb); - throw new LightInjectException(sb.ToString(), e); - } - - /// - /// Tries to throw the exception with additional details. - /// - /// The exception. - /// The implementing type. - /// - public static void TryThrow(Exception e, Type implementingType) - { - var ex = e as InvalidOperationException; - if (ex == null || ex.Message.StartsWith(LightInjectUnableToResolveType) == false) - return; - - var sb = new StringBuilder(); - sb.AppendLine("Unresolved type: " + ex.Message.Substring(LightInjectUnableToResolveType.Length)); - sb.AppendLine("Implementing type: " + implementingType); - WriteDetails(ex, sb); - throw new LightInjectException(sb.ToString(), e); - } - - /// - /// Writes the details. - /// - /// The exception. - /// The to write the details to. - private static void WriteDetails(InvalidOperationException ex, StringBuilder sb) - { - ex = ex.InnerException as InvalidOperationException; - while (ex != null) - { - var message = ex.Message; - - if (message.StartsWith(LightInjectUnableToResolveType)) - { - sb.AppendLine("-> Unresolved type: " + message.Substring(LightInjectUnableToResolveType.Length)); - } - else if (message.StartsWith(LightInjectUnresolvedDependency)) - { - var pos = message.InvariantIndexOf(LightInjectRequestedDependency); - sb.AppendLine("-> Unresolved dependency: " + message.Substring(pos + LightInjectRequestedDependency.Length + 1).TrimEnd(']')); - } - - ex = ex.InnerException as InvalidOperationException; - } - } - } -} diff --git a/src/Umbraco.Infrastructure/Composing/LightInject/MixedLightInjectScopeManagerProvider.cs b/src/Umbraco.Infrastructure/Composing/LightInject/MixedLightInjectScopeManagerProvider.cs deleted file mode 100644 index 3175376b33..0000000000 --- a/src/Umbraco.Infrastructure/Composing/LightInject/MixedLightInjectScopeManagerProvider.cs +++ /dev/null @@ -1,43 +0,0 @@ -using LightInject; - -namespace Umbraco.Core.Composing.LightInject -{ - // by default, the container's scope manager provider is PerThreadScopeManagerProvider, - // and then container.EnablePerWebRequestScope() replaces it with PerWebRequestScopeManagerProvider, - // however if any delegate has been compiled already at that point, it captures the scope - // manager provider and changing it afterwards has no effect for that delegate. - // - // therefore, Umbraco uses the mixed scope manager provider, which initially wraps an instance - // of PerThreadScopeManagerProvider and then can replace that wrapped instance with an instance - // of PerWebRequestScopeManagerProvider - but all delegates see is the mixed one - and therefore - // they can transition without issues. - // - // The PerWebRequestScopeManager maintains the scope in HttpContext and LightInject registers a - // module (PreApplicationStartMethod) which disposes it on EndRequest - // - // the mixed provider is installed in container.ConfigureUmbracoCore() and then, - // when doing eg container.EnableMvc() or anything that does container.EnablePerWebRequestScope() - // we need to take great care to preserve the mixed scope manager provider! - - public class MixedLightInjectScopeManagerProvider : IScopeManagerProvider - { - private IScopeManagerProvider _provider; - - public MixedLightInjectScopeManagerProvider() - { - _provider = new PerThreadScopeManagerProvider(); - } - - public void EnablePerWebRequestScope(IScopeManagerProvider perRequestScopeProvider) - { - if (perRequestScopeProvider.GetType().IsAssignableFrom(_provider.GetType())) return; - _provider = perRequestScopeProvider; - } - - public IScopeManager GetScopeManager(IServiceFactory factory) - { - return _provider.GetScopeManager(factory); - } - } -} - diff --git a/src/Umbraco.Infrastructure/Composing/RegisterFactory.cs b/src/Umbraco.Infrastructure/Composing/RegisterFactory.cs deleted file mode 100644 index e065852538..0000000000 --- a/src/Umbraco.Infrastructure/Composing/RegisterFactory.cs +++ /dev/null @@ -1,65 +0,0 @@ -using LightInject; -using LightInject.Microsoft.DependencyInjection; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; -using System; -using System.Reflection; -using Umbraco.Core.Composing.LightInject; -using Umbraco.Core.Configuration; -using Umbraco.Core.Configuration.Models; - -namespace Umbraco.Core.Composing -{ - - /// - /// Creates the container. - /// - public static class RegisterFactory - { - //TODO: This can die when net framework is gone - - // cannot use typeof().AssemblyQualifiedName on the web container - we don't reference it - // a normal Umbraco site should run on the web container, but an app may run on the core one - private const string CoreLightInjectContainerTypeName = "Umbraco.Core.Composing.LightInject.LightInjectContainer,Umbraco.Core"; - private const string WebLightInjectContainerTypeName = "Umbraco.Core.Composing.LightInject.LightInjectContainer,Umbraco.Infrastructure"; - - /// - /// Creates a new instance of the configured container. - /// - /// - /// To override the default LightInjectContainer, add an appSetting named 'Umbraco.Core.RegisterType' with - /// a fully qualified type name to a class with a static method "Create" returning an IRegister. - /// - public static IRegister Create(GlobalSettings globalSettings) - { - Type type; - - var configuredTypeName = globalSettings.RegisterType; - if (configuredTypeName.IsNullOrWhiteSpace()) - { - // try to get the web LightInject container type, - // else the core LightInject container type - type = Type.GetType(configuredTypeName = WebLightInjectContainerTypeName) ?? - Type.GetType(configuredTypeName = CoreLightInjectContainerTypeName); - } - else - { - // try to get the configured type - type = Type.GetType(configuredTypeName); - } - - if (type == null) - throw new Exception($"Cannot find register factory class '{configuredTypeName}'."); - - var factoryMethod = type.GetMethod("Create", BindingFlags.Public | BindingFlags.Static); - if (factoryMethod == null) - throw new Exception($"Register factory class '{configuredTypeName}' does not have a public static method named Create."); - - var container = factoryMethod.Invoke(null, Array.Empty()) as IRegister; - if (container == null) - throw new Exception($"Register factory '{configuredTypeName}' did not return an IRegister implementation."); - - return container; - } - } -} diff --git a/src/Umbraco.Infrastructure/Composing/ServiceProviderFactoryAdapter.cs b/src/Umbraco.Infrastructure/Composing/ServiceProviderFactoryAdapter.cs deleted file mode 100644 index 1273e40123..0000000000 --- a/src/Umbraco.Infrastructure/Composing/ServiceProviderFactoryAdapter.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.Extensions.DependencyInjection; -using Umbraco.Core.Composing; - -namespace Umbraco.Infrastructure.Composing -{ - internal class ServiceProviderFactoryAdapter : IFactory - { - private readonly IServiceProvider _serviceProvider; - - private ServiceProviderFactoryAdapter(IServiceProvider serviceProvider) - { - _serviceProvider = serviceProvider; - } - - public object Concrete => _serviceProvider; - - public object GetInstance(Type type) - { - return _serviceProvider.GetRequiredService(type); - } - - public object TryGetInstance(Type type) - { - return _serviceProvider.GetService(type); - } - - public IEnumerable GetAllInstances(Type serviceType) - { - return _serviceProvider.GetServices(serviceType); - } - - public IEnumerable GetAllInstances() where TService : class - { - return _serviceProvider.GetServices(); - } - - public IDisposable BeginScope() - { - return _serviceProvider.CreateScope(); - } - - public static IFactory Wrap(IServiceProvider serviceProvider) - { - return new ServiceProviderFactoryAdapter(serviceProvider); - } - } -} diff --git a/src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs b/src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs index a7e7981daf..630d0970bd 100644 --- a/src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs +++ b/src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs @@ -46,14 +46,14 @@ namespace Umbraco.Core composition.RegisterUnique(appCaches); composition.RegisterUnique(appCaches.RequestCache); composition.RegisterUnique(databaseFactory); - composition.RegisterUnique(factory => factory.GetInstance().SqlContext); + composition.RegisterUnique(factory => factory.GetRequiredService().SqlContext); composition.RegisterUnique(typeLoader); composition.RegisterUnique(state); composition.RegisterUnique(typeFinder); composition.RegisterUnique(ioHelper); composition.RegisterUnique(umbracoVersion); composition.RegisterUnique(dbProviderFactoryCreator); - composition.RegisterUnique(factory => factory.GetInstance().BulkSqlInsertProvider); + composition.RegisterUnique(factory => factory.GetRequiredService().BulkSqlInsertProvider); composition.RegisterUnique(hostingEnvironment); composition.RegisterUnique(backOfficeInfo); } diff --git a/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerComposer.cs b/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerComposer.cs index 797e353fcf..2c0f995236 100644 --- a/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerComposer.cs +++ b/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerComposer.cs @@ -17,9 +17,9 @@ namespace Umbraco.Core.Logging.Viewer composition.RegisterUnique(factory => { - return new SerilogJsonLogViewer(factory.GetInstance>(), - factory.GetInstance(), - factory.GetInstance(), + return new SerilogJsonLogViewer(factory.GetRequiredService>(), + factory.GetRequiredService(), + factory.GetRequiredService(), Log.Logger); } ); } diff --git a/src/Umbraco.Infrastructure/Persistence/Mappers/MapperCollectionBuilder.cs b/src/Umbraco.Infrastructure/Persistence/Mappers/MapperCollectionBuilder.cs index 66f0c90bfa..77f5b627bb 100644 --- a/src/Umbraco.Infrastructure/Persistence/Mappers/MapperCollectionBuilder.cs +++ b/src/Umbraco.Infrastructure/Persistence/Mappers/MapperCollectionBuilder.cs @@ -20,7 +20,7 @@ namespace Umbraco.Core.Persistence.Mappers // - service IMapperCollection, returns MappersCollectionBuilder's collection register.Register(Lifetime.Singleton); - register.Register(factory => factory.GetInstance()); + register.Register(factory => factory.GetRequiredService()); } public MapperCollectionBuilder AddCoreMappers() diff --git a/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs b/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs index f9ec706ab7..70e29fd443 100644 --- a/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs +++ b/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs @@ -1,5 +1,6 @@ using System; using Examine; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Umbraco.Core.Cache; using Umbraco.Core.Composing; @@ -86,8 +87,8 @@ namespace Umbraco.Core.Runtime // register the scope provider composition.RegisterUnique(); // implements both IScopeProvider and IScopeAccessor - composition.RegisterUnique(f => f.GetInstance()); - composition.RegisterUnique(f => f.GetInstance()); + composition.RegisterUnique(f => f.GetRequiredService()); + composition.RegisterUnique(f => f.GetRequiredService()); composition.RegisterUnique(); composition.RegisterUnique(); @@ -95,7 +96,7 @@ namespace Umbraco.Core.Runtime // register database builder // *not* a singleton, don't want to keep it around - composition.Register(); + composition.Services.AddTransient(); // register manifest parser, will be injected in collection builders where needed composition.RegisterUnique(); @@ -130,15 +131,15 @@ namespace Umbraco.Core.Runtime // register a server registrar, by default it's the db registrar composition.RegisterUnique(f => { - var globalSettings = f.GetInstance>().Value; + var globalSettings = f.GetRequiredService>().Value; // TODO: we still register the full IServerMessenger because // even on 1 single server we can have 2 concurrent app domains var singleServer = globalSettings.DisableElectionForSingleServer; return singleServer - ? (IServerRegistrar) new SingleServerRegistrar(f.GetInstance()) + ? (IServerRegistrar) new SingleServerRegistrar(f.GetRequiredService()) : new DatabaseServerRegistrar( - new Lazy(f.GetInstance), + new Lazy(f.GetRequiredService), new DatabaseServerRegistrarOptions()); }); @@ -147,15 +148,15 @@ namespace Umbraco.Core.Runtime // project composition.RegisterUnique(factory => new DatabaseServerMessenger( - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance>(), - factory.GetInstance(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService>(), + factory.GetRequiredService(), true, new DatabaseServerMessengerOptions(), - factory.GetInstance(), - factory.GetInstance() + factory.GetRequiredService(), + factory.GetRequiredService() )); composition.CacheRefreshers() @@ -170,7 +171,7 @@ namespace Umbraco.Core.Runtime composition.RegisterUnique(); composition.RegisterUnique(factory - => new DefaultShortStringHelper(new DefaultShortStringHelperConfig().WithDefault(factory.GetInstance>().Value))); + => new DefaultShortStringHelper(new DefaultShortStringHelperConfig().WithDefault(factory.GetRequiredService>().Value))); composition.UrlSegmentProviders() .Append(); @@ -184,7 +185,7 @@ namespace Umbraco.Core.Runtime composition.RegisterUnique(); composition.SetCultureDictionaryFactory(); - composition.Register(f => f.GetInstance().CreateDictionary(), Lifetime.Singleton); + composition.Register(f => f.GetRequiredService().CreateDictionary(), Lifetime.Singleton); composition.RegisterUnique(); // register the published snapshot accessor - the "current" published snapshot is in the umbraco context @@ -318,7 +319,7 @@ namespace Umbraco.Core.Runtime .Append() .Append(); - composition.Register(Lifetime.Request); + composition.Services.AddScoped(); composition.SearchableTrees() .Add(() => composition.TypeLoader.GetTypes()); @@ -333,10 +334,10 @@ namespace Umbraco.Core.Runtime composition.RegisterUnique(); // register distributed cache - composition.RegisterUnique(f => new DistributedCache(f.GetInstance(), f.GetInstance())); + composition.RegisterUnique(f => new DistributedCache(f.GetRequiredService(), f.GetRequiredService())); - composition.Register(Lifetime.Request); + composition.Services.AddScoped(); composition.RegisterUnique(); composition.RegisterUnique(); @@ -346,8 +347,8 @@ namespace Umbraco.Core.Runtime composition.RegisterUnique(); composition.Register(factory => { - var umbCtx = factory.GetInstance(); - return new PublishedContentQuery(umbCtx.UmbracoContext.PublishedSnapshot, factory.GetInstance(), factory.GetInstance()); + var umbCtx = factory.GetRequiredService(); + return new PublishedContentQuery(umbCtx.UmbracoContext.PublishedSnapshot, factory.GetRequiredService(), factory.GetRequiredService()); }, Lifetime.Request); composition.RegisterUnique(); @@ -361,7 +362,7 @@ namespace Umbraco.Core.Runtime // register accessors for cultures composition.RegisterUnique(); - composition.Register(Lifetime.Singleton); + composition.Services.AddSingleton(); composition.RegisterUnique(); diff --git a/src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs b/src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs index 56cd2ecbc3..b226169f12 100644 --- a/src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs +++ b/src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core.Cache; @@ -27,13 +28,14 @@ namespace Umbraco.Core.Runtime public class CoreRuntime : IRuntime { private ComponentCollection _components; - private IFactory _factory; // runtime state, this instance will get replaced again once the essential services are available to run the check private RuntimeState _state = RuntimeState.Booting(); private readonly IUmbracoBootPermissionChecker _umbracoBootPermissionChecker; private readonly GlobalSettings _globalSettings; private readonly ConnectionStrings _connectionStrings; + private IServiceProvider _serviceProvider; + public CoreRuntime( GlobalSettings globalSettings, ConnectionStrings connectionStrings, @@ -113,9 +115,9 @@ namespace Umbraco.Core.Runtime public IMainDom MainDom { get; } /// - public virtual IFactory Configure(IRegister register) + public virtual void Configure(IServiceCollection services) { - if (register is null) throw new ArgumentNullException(nameof(register)); + if (services is null) throw new ArgumentNullException(nameof(services)); // create and register the essential services @@ -149,22 +151,19 @@ namespace Umbraco.Core.Runtime // application environment ConfigureUnhandledException(); - _factory = Configure(register, timer); - - return _factory; + Configure(services, timer); } } /// /// Configure the runtime within a timer. /// - private IFactory Configure(IRegister register, DisposableTimer timer) + private void Configure(IServiceCollection services, DisposableTimer timer) { - if (register is null) throw new ArgumentNullException(nameof(register)); + if (services is null) throw new ArgumentNullException(nameof(services)); if (timer is null) throw new ArgumentNullException(nameof(timer)); Composition composition = null; - IFactory factory = null; try { @@ -181,7 +180,7 @@ namespace Umbraco.Core.Runtime _state = new RuntimeState(_globalSettings, UmbracoVersion, databaseFactory, RuntimeLoggerFactory.CreateLogger()); // create the composition - composition = new Composition(register, typeLoader, ProfilingLogger, _state, IOHelper, AppCaches); + composition = new Composition(services, typeLoader, ProfilingLogger, _state, IOHelper, AppCaches); composition.RegisterEssentials(Logger, RuntimeLoggerFactory, Profiler, ProfilingLogger, MainDom, AppCaches, databaseFactory, typeLoader, _state, TypeFinder, IOHelper, UmbracoVersion, DbProviderFactoryCreator, HostingEnvironment, BackOfficeInfo); @@ -202,8 +201,9 @@ namespace Umbraco.Core.Runtime RunComposers(typeLoader, composition); } - // create the factory - factory = composition.CreateFactory(); + composition.RegisterBuilders(); + // TODO: We "should" be able to avoid this + _serviceProvider = composition.Services.BuildServiceProvider(); } catch (Exception e) { @@ -220,14 +220,15 @@ namespace Umbraco.Core.Runtime // if something goes wrong above, we may end up with no factory // meaning nothing can get the runtime state, etc - so let's try // to make sure we have a factory - if (factory == null) + + try { - try - { - factory = composition?.CreateFactory(); - } - catch { /* yea */ } + composition?.RegisterBuilders(); + // TODO: We "should" be able to avoid this + _serviceProvider = composition?.Services.BuildServiceProvider(); } + catch { /* yea */ } + Debugger.Break(); @@ -237,27 +238,30 @@ namespace Umbraco.Core.Runtime // understand this and will nullify themselves, while UmbracoModule will // throw a BootFailedException for every requests. } - - return factory; } - public void Start() + public void Start(IServiceProvider serviceProvider) { + // Capture for CreateDatabaseFactory + // TODO: MSDI - Split core runtime into configure vs startup classes + // TODO: MSDI - Fix CreateDatabaseFactory + _serviceProvider = serviceProvider; + if (_state.Level <= RuntimeLevel.BootFailed) throw new InvalidOperationException($"Cannot start the runtime if the runtime level is less than or equal to {RuntimeLevel.BootFailed}"); // throws if not full-trust _umbracoBootPermissionChecker.ThrowIfNotPermissions(); - var hostingEnvironmentLifetime = _factory.TryGetInstance(); + var hostingEnvironmentLifetime = serviceProvider.GetService(); if (hostingEnvironmentLifetime == null) throw new InvalidOperationException($"An instance of {typeof(IApplicationShutdownRegistry)} could not be resolved from the container, ensure that one if registered in your runtime before calling {nameof(IRuntime)}.{nameof(Start)}"); // acquire the main domain - if this fails then anything that should be registered with MainDom will not operate - AcquireMainDom(MainDom, _factory.GetInstance()); + AcquireMainDom(MainDom, serviceProvider.GetService()); // create & initialize the components - _components = _factory.GetInstance(); + _components = serviceProvider.GetService(); _components.Initialize(); } @@ -356,11 +360,6 @@ namespace Umbraco.Core.Runtime _components?.Terminate(); } - public void ReplaceFactory(IServiceProvider serviceProvider) - { - _factory = ServiceProviderFactoryAdapter.Wrap(serviceProvider); - } - #region Getters // getters can be implemented by runtimes inheriting from CoreRuntime @@ -387,7 +386,20 @@ namespace Umbraco.Core.Runtime /// /// This is strictly internal, for tests only. protected internal virtual IUmbracoDatabaseFactory CreateDatabaseFactory() - => new UmbracoDatabaseFactory(RuntimeLoggerFactory.CreateLogger(), RuntimeLoggerFactory, Options.Create(_globalSettings), Options.Create(_connectionStrings), new Lazy(() => _factory.GetInstance()), DbProviderFactoryCreator); + => new UmbracoDatabaseFactory( + RuntimeLoggerFactory.CreateLogger(), + RuntimeLoggerFactory, + Options.Create(_globalSettings), + Options.Create(_connectionStrings), + new Lazy(() => + { + if (_serviceProvider == null) + { + throw new ApplicationException("_serviceProvider should have been captured from CoreRuntime.Start (or built during configure)"); + } + return _serviceProvider.GetRequiredService(); + }), + DbProviderFactoryCreator); #endregion diff --git a/src/Umbraco.Infrastructure/Search/ExamineComposer.cs b/src/Umbraco.Infrastructure/Search/ExamineComposer.cs index 68a1213629..58de71d920 100644 --- a/src/Umbraco.Infrastructure/Search/ExamineComposer.cs +++ b/src/Umbraco.Infrastructure/Search/ExamineComposer.cs @@ -1,4 +1,5 @@ -using Umbraco.Core; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; @@ -22,29 +23,29 @@ namespace Umbraco.Web.Search // populators are not a collection: one cannot remove ours, and can only add more // the container can inject IEnumerable and get them all - composition.Register(Lifetime.Singleton); - composition.Register(Lifetime.Singleton); - composition.Register(Lifetime.Singleton); - composition.Register(Lifetime.Singleton); + composition.Services.AddSingleton(); + composition.Services.AddSingleton(); + composition.Services.AddSingleton(); + composition.Services.AddSingleton(); - composition.Register(Lifetime.Singleton); + composition.Services.AddSingleton(); composition.RegisterUnique(); composition.RegisterUnique(); composition.RegisterUnique(factory => new ContentValueSetBuilder( - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService(), true)); composition.RegisterUnique(factory => new ContentValueSetBuilder( - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService(), false)); composition.RegisterUnique, MediaValueSetBuilder>(); composition.RegisterUnique, MemberValueSetBuilder>(); diff --git a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj index d8fbbd7fbd..2343ea806a 100644 --- a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj +++ b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj @@ -11,11 +11,6 @@ - - - - - diff --git a/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs index bc61f2eaee..f72f3e6de2 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs @@ -1,5 +1,6 @@ using System.Linq; using System.Reflection; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core.Configuration; using Umbraco.Core; using Umbraco.Core.Logging; @@ -18,7 +19,7 @@ namespace Umbraco.ModelsBuilder.Embedded.Compose public void Compose(Composition composition) { composition.Components().Append(); - composition.Register(Lifetime.Singleton); + composition.Services.AddSingleton(); composition.RegisterUnique(); composition.RegisterUnique(); composition.RegisterUnique(); @@ -27,10 +28,10 @@ namespace Umbraco.ModelsBuilder.Embedded.Compose composition.RegisterUnique(); composition.RegisterUnique(factory => { - var config = factory.GetInstance>().Value; + var config = factory.GetRequiredService>().Value; if (config.ModelsMode == ModelsMode.PureLive) { - return factory.GetInstance(); + return factory.GetRequiredService(); // the following would add @using statement in every view so user's don't // have to do it - however, then noone understands where the @using statement // comes from, and it cannot be avoided / removed --- DISABLED @@ -49,8 +50,8 @@ namespace Umbraco.ModelsBuilder.Embedded.Compose } else if (config.EnableFactory) { - var typeLoader = factory.GetInstance(); - var publishedValueFallback = factory.GetInstance(); + var typeLoader = factory.GetRequiredService(); + var publishedValueFallback = factory.GetRequiredService(); var types = typeLoader .GetTypes() // element models .Concat(typeLoader.GetTypes()); // content models diff --git a/src/Umbraco.PublishedCache.NuCache/NuCacheComposer.cs b/src/Umbraco.PublishedCache.NuCache/NuCacheComposer.cs index d3b1777163..8ebd9d31b9 100644 --- a/src/Umbraco.PublishedCache.NuCache/NuCacheComposer.cs +++ b/src/Umbraco.PublishedCache.NuCache/NuCacheComposer.cs @@ -1,4 +1,5 @@ -using Umbraco.Core; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Models; using Umbraco.Core.Scoping; @@ -15,7 +16,7 @@ namespace Umbraco.Web.PublishedCache.NuCache base.Compose(composition); // register the NuCache database data source - composition.Register(); + composition.Services.AddTransient(); // register the NuCache published snapshot service // must register default options, required in the service ctor @@ -26,8 +27,8 @@ namespace Umbraco.Web.PublishedCache.NuCache // mapping lookups if we are using nucache. composition.RegisterUnique(factory => { - var idkSvc = new IdKeyMap(factory.GetInstance()); - var publishedSnapshotService = factory.GetInstance() as PublishedSnapshotService; + var idkSvc = new IdKeyMap(factory.GetRequiredService()); + var publishedSnapshotService = factory.GetRequiredService() as PublishedSnapshotService; if (publishedSnapshotService != null) { idkSvc.SetMapper(UmbracoObjectTypes.Document, id => publishedSnapshotService.GetDocumentUid(id), uid => publishedSnapshotService.GetDocumentId(uid)); diff --git a/src/Umbraco.Tests.Common/Assertions.cs b/src/Umbraco.Tests.Common/Assertions.cs deleted file mode 100644 index 0f99a6a091..0000000000 --- a/src/Umbraco.Tests.Common/Assertions.cs +++ /dev/null @@ -1,35 +0,0 @@ -using LightInject; -using NUnit.Framework; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Umbraco.Tests.Common.Composing; - -namespace Umbraco.Tests.Common -{ - public class Assertions - { - public static void AssertContainer(ServiceContainer container, bool reportOnly = false) - { - var results = container.Validate().ToList(); - foreach (var resultGroup in results.GroupBy(x => x.Severity).OrderBy(x => x.Key)) - { - Console.WriteLine($"{resultGroup.Key}: {resultGroup.Count()}"); - } - - foreach (var resultGroup in results.GroupBy(x => x.Severity).OrderBy(x => x.Key)) - { - foreach (var result in resultGroup) - { - Console.WriteLine(); - Console.Write(result.ToText()); - } - } - - if (!reportOnly) - Assert.AreEqual(0, results.Count); - } - - } -} diff --git a/src/Umbraco.Tests.Common/Composing/LightInjectValidation.cs b/src/Umbraco.Tests.Common/Composing/LightInjectValidation.cs deleted file mode 100644 index 4925074b9e..0000000000 --- a/src/Umbraco.Tests.Common/Composing/LightInjectValidation.cs +++ /dev/null @@ -1,319 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using LightInject; -using System.Collections.Concurrent; -using System.Collections.ObjectModel; -using System.Reflection; -using ServiceMap = System.Collections.Generic.Dictionary>; - -/********************************************************************************* - The MIT License (MIT) - - Copyright (c) 2017 bernhard.richter@gmail.com - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -****************************************************************************** - LightInject.Validation version 1.0.1 - http://www.lightinject.net/ - http://twitter.com/bernhardrichter -******************************************************************************/ - -namespace Umbraco.Tests.Common.Composing -{ - public static class LightInjectValidation - { - private static readonly ConcurrentDictionary LifeSpans = new ConcurrentDictionary(); - - private const string NotDisposeMessageServiceType = - @"The service {0} is being injected as a constructor argument into {1} implements IDisposable, " + - "but is registered without a lifetime (transient). LightInject will not be able to dispose the instance represented by {0}. " + - "If the intent was to manually control the instantiation and destruction, inject Func<{0}> instead. " + - "Otherwise register `{0}` with a lifetime (PerContainer, PerRequest or PerScope)."; - - private const string NotDisposeMessageImplementingType = - @"The service {0} represented by {1} is being injected as a constructor argument into {2} implements IDisposable, " + - "but is registered without a lifetime (transient). LightInject will not be able to dispose the instance represented by {0}. " + - "If the intent was to manually control the instantiation and destruction, inject Func<{0}> instead. " + - "Otherwise register `{0}` with a lifetime (PerContainer, PerRequest or PerScope)."; - - - private const string MissingDeferredDependency = - @"The injected '{0}' does not contain a registration for the underlying type '{1}'. " + - "Ensure that '{1}' is registered so that the service can be resolved by '{0}'"; - - /* - The service 'NameSpace.IBar' that is being injected into 'NameSpace.Foo' is registered with -with a 'Transient' lifetime while the 'NameSpace.Foo' is registered with the 'PerScope' lifetime. -Ensure that 'NameSpace.IBar' is registered with a lifetime that is equal to or has a longer lifetime than the 'PerScope' lifetime. - */ - private const string CaptiveDependency = - @"The service '{0}' that is being injected into {1} is registered with " + - "a '{2}' lifetime while the {1} is registered with the '{3}' lifetime. " + - "Ensure that '{0}' is registered with a lifetime that is equal to or has a longer lifetime than the '{3}' lifetime. " + - "Alternatively ensure that `{1}` is registered with a lifetime that is equal to or " + - "has a shorter lifetime than `{2}` lifetime."; - - private const string MissingDependency = - "Class: 'NameSpace.Foo', Parameter 'NameSpace.IBar bar' -> The injected service NameSpace IBar is not registered." - ; - - - static LightInjectValidation() - { - LifeSpans.TryAdd(typeof(PerRequestLifeTime), 10); - LifeSpans.TryAdd(typeof(PerScopeLifetime), 20); - LifeSpans.TryAdd(typeof(PerContainerLifetime), 30); - } - - public static IEnumerable Validate(this ServiceContainer container) - { - var serviceMap = container.AvailableServices.GroupBy(sr => sr.ServiceType).ToDictionary(gr => gr.Key, - gr => gr.ToDictionary(sr => sr.ServiceName, sr => sr, StringComparer.OrdinalIgnoreCase)); - - var verifyableServices = container.AvailableServices.Where(sr => sr.ImplementingType != null); - - return verifyableServices.SelectMany(sr => - ValidateConstructor(serviceMap, sr, container.ConstructorSelector.Execute(sr.ImplementingType))); - } - - private static IReadOnlyCollection ValidateConstructor(ServiceMap serviceMap, - ServiceRegistration serviceRegistration, ConstructorInfo constructorInfo) - { - var result = new Collection(); - - foreach (var parameter in constructorInfo.GetParameters()) - { - var validationTarget = new ValidationTarget(serviceRegistration, parameter); - Validate(validationTarget, serviceMap, result); - } - return result; - } - - private static void Validate(ValidationTarget validationTarget, ServiceMap serviceMap, ICollection result) - { - var registration = GetServiceRegistration(serviceMap, validationTarget); - if (registration == null) - if (validationTarget.ServiceType.IsFunc() || validationTarget.ServiceType.IsLazy()) - { - var serviceType = validationTarget.ServiceType.GenericTypeArguments[0]; - var underlyingvalidationTarget = validationTarget.WithServiceDescription(serviceType, string.Empty); - registration = GetServiceRegistration(serviceMap, underlyingvalidationTarget); - - if (registration != null) - return; - - if (serviceMap.ContainsAmbiguousRegistrationFor(serviceType)) - result.Add(new ValidationResult("", ValidationSeverity.Ambiguous, underlyingvalidationTarget)); - else - { - var message = string.Format(MissingDeferredDependency, validationTarget.ServiceType, underlyingvalidationTarget.ServiceType); - result.Add(new ValidationResult(message, ValidationSeverity.MissingDependency, underlyingvalidationTarget)); - } - } - else if (validationTarget.ServiceType.IsGenericType && validationTarget.ServiceType.GetGenericTypeDefinition() == typeof(IEnumerable<>)) - { - var serviceType = validationTarget.ServiceType.GenericTypeArguments[0]; - var underlyingvalidationTarget = validationTarget.WithServiceDescription(serviceType, string.Empty); - var registrations = GetServiceRegistrations(serviceMap, underlyingvalidationTarget); - if (registrations.Any()) return; - - // strict: there has to be at least 1 - var message = string.Format(MissingDeferredDependency, validationTarget.ServiceType, underlyingvalidationTarget.ServiceType); - result.Add(new ValidationResult(message, ValidationSeverity.MissingDependency, underlyingvalidationTarget)); - } - else - if (serviceMap.ContainsAmbiguousRegistrationFor(validationTarget.ServiceType)) - result.Add(new ValidationResult("", ValidationSeverity.Ambiguous, validationTarget)); - else - result.Add(new ValidationResult("", ValidationSeverity.MissingDependency, validationTarget)); - else - { - ValidateDisposable(validationTarget, result, registration); - ValidateLifetime(validationTarget, registration, result); - } - } - - private static void ValidateDisposable(ValidationTarget validationTarget, ICollection result, - ServiceRegistration registration) - { - if (registration.ServiceType.Implements()) - { - var message = string.Format(NotDisposeMessageServiceType, registration.ServiceType, - validationTarget.DeclaringService.ImplementingType); - result.Add(new ValidationResult(message, ValidationSeverity.NotDisposed, validationTarget)); - } - - else if (registration.ImplementingType != null && registration.ImplementingType.Implements()) - { - var message = string.Format(NotDisposeMessageImplementingType, registration.ImplementingType, - registration.ServiceType, - validationTarget.DeclaringService.ImplementingType); - result.Add(new ValidationResult(message, ValidationSeverity.NotDisposed, validationTarget)); - } - } - - - private static void ValidateLifetime(ValidationTarget validationTarget, ServiceRegistration dependencyRegistration, ICollection result) - { - if (GetLifespan(validationTarget.DeclaringService.Lifetime) > GetLifespan(dependencyRegistration.Lifetime)) - { - var message = string.Format(CaptiveDependency, dependencyRegistration.ServiceType, - validationTarget.DeclaringService.ServiceType, GetLifetimeName(dependencyRegistration.Lifetime), - GetLifetimeName(validationTarget.DeclaringService.Lifetime)); - result.Add(new ValidationResult(message, ValidationSeverity.Captive, validationTarget)); - } - } - - public static void SetLifespan(int lifeSpan) where TLifetime : ILifetime - { - LifeSpans.TryAdd(typeof(TLifetime), lifeSpan); - } - - private static IEnumerable GetServiceRegistrations(ServiceMap serviceMap, ValidationTarget validationTarget) - { - return serviceMap.Where(x => validationTarget.ServiceType.IsAssignableFrom(x.Key)).SelectMany(x => x.Value.Values); - } - - private static ServiceRegistration GetServiceRegistration(ServiceMap serviceMap, ValidationTarget validationTarget) - { - if (!serviceMap.TryGetValue(validationTarget.ServiceType, out var registrations)) - return null; - - if (registrations.TryGetValue(string.Empty, out var registration)) - return registration; - - if (registrations.Count == 1) - return registrations.Values.First(); - - if (registrations.TryGetValue(validationTarget.ServiceName, out registration)) - return registration; - - return null; - } - - private static string GetLifetimeName(ILifetime lifetime) - { - if (lifetime == null) - return "Transient"; - return lifetime.GetType().Name; - } - - private static int GetLifespan(ILifetime lifetime) - { - if (lifetime == null) - return 0; - if (LifeSpans.TryGetValue(lifetime.GetType(), out var lifespan)) - return lifespan; - return 0; - } - } - - - public class ValidationTarget - { - public ServiceRegistration DeclaringService { get; } - public ParameterInfo Parameter { get; } - public Type ServiceType { get; } - public string ServiceName { get; } - - - public ValidationTarget(ServiceRegistration declaringRegistration, ParameterInfo parameter) : this(declaringRegistration, parameter, parameter.ParameterType, string.Empty) - { - } - - - public ValidationTarget(ServiceRegistration declaringService, ParameterInfo parameter, Type serviceType, string serviceName) - { - DeclaringService = declaringService; - Parameter = parameter; - ServiceType = serviceType; - ServiceName = serviceName; - - - if (serviceType.GetTypeInfo().IsGenericType && serviceType.GetTypeInfo().ContainsGenericParameters) - ServiceType = serviceType.GetGenericTypeDefinition(); - - } - - public ValidationTarget WithServiceDescription(Type serviceType, string serviceName) - { - return new ValidationTarget(DeclaringService, Parameter, serviceType, serviceName); - } - - } - - - - - - public class ValidationResult - { - public ValidationResult(string message, ValidationSeverity severity, ValidationTarget validationTarget) - { - Message = message; - Severity = severity; - ValidationTarget = validationTarget; - } - - public string Message { get; } - - public ValidationSeverity Severity { get; } - public ValidationTarget ValidationTarget { get; } - } - - public enum ValidationSeverity - { - NoIssues, - Captive, - NotDisposed, - MissingDependency, - Ambiguous - } - - internal static class TypeExtensions - { - public static bool Implements(this Type type) - { - return type.GetTypeInfo().ImplementedInterfaces.Contains(typeof(TBaseType)); - } - - public static bool IsFunc(this Type type) - { - var typeInfo = type.GetTypeInfo(); - return typeInfo.IsGenericType && typeInfo.GetGenericTypeDefinition() == typeof(Func<>); - } - - public static bool IsLazy(this Type type) - { - var typeInfo = type.GetTypeInfo(); - return typeInfo.IsGenericType && typeInfo.GetGenericTypeDefinition() == typeof(Lazy<>); - } - } - - internal static class ServiceMapExtensions - { - public static bool ContainsAmbiguousRegistrationFor(this ServiceMap serviceMap, Type serviceType) - { - if (!serviceMap.TryGetValue(serviceType, out var registrations)) - return false; - return registrations.Count > 1; - } - } -} diff --git a/src/Umbraco.Tests.Common/Composing/ValidationResultExtensions.cs b/src/Umbraco.Tests.Common/Composing/ValidationResultExtensions.cs deleted file mode 100644 index cfd136b63c..0000000000 --- a/src/Umbraco.Tests.Common/Composing/ValidationResultExtensions.cs +++ /dev/null @@ -1,107 +0,0 @@ -using System; -using System.Text; -using Umbraco.Core; - -namespace Umbraco.Tests.Common.Composing -{ - // These are used for Light Inject container validation - public static class ValidationResultExtensions - { - public static string ToText(this ValidationResult result) - { - var text = new StringBuilder(); - - text.AppendLine($"{result.Severity}: {WordWrap(result.Message, 120)}"); - var target = result.ValidationTarget; - text.Append("\tsvce: "); - text.Append(target.ServiceName); - text.Append(target.DeclaringService.ServiceType); - if (!target.DeclaringService.ServiceName.IsNullOrWhiteSpace()) - { - text.Append(" '"); - text.Append(target.DeclaringService.ServiceName); - text.Append("'"); - } - - text.Append(" ("); - if (target.DeclaringService.Lifetime == null) - text.Append("Transient"); - else - text.Append(target.DeclaringService.Lifetime.ToString().TrimStart("LightInject.").TrimEnd("Lifetime")); - text.AppendLine(")"); - text.Append("\timpl: "); - text.Append(target.DeclaringService.ImplementingType); - text.AppendLine(); - text.Append("\tparm: "); - text.Append(target.Parameter); - text.AppendLine(); - - return text.ToString(); - } - - private static string WordWrap(string text, int width) - { - int pos, next; - var sb = new StringBuilder(); - var nl = Environment.NewLine; - - // Lucidity check - if (width < 1) - return text; - - // Parse each line of text - for (pos = 0; pos < text.Length; pos = next) - { - // Find end of line - var eol = text.IndexOf(nl, pos, StringComparison.Ordinal); - - if (eol == -1) - next = eol = text.Length; - else - next = eol + nl.Length; - - // Copy this line of text, breaking into smaller lines as needed - if (eol > pos) - { - do - { - var len = eol - pos; - - if (len > width) - len = BreakLine(text, pos, width); - - if (pos > 0) - sb.Append("\t\t"); - sb.Append(text, pos, len); - sb.Append(nl); - - // Trim whitespace following break - pos += len; - - while (pos < eol && char.IsWhiteSpace(text[pos])) - pos++; - - } while (eol > pos); - } - else sb.Append(nl); // Empty line - } - - return sb.ToString(); - } - - private static int BreakLine(string text, int pos, int max) - { - // Find last whitespace in line - var i = max - 1; - while (i >= 0 && !char.IsWhiteSpace(text[pos + i])) - i--; - if (i < 0) - return max; // No whitespace found; break at maximum length - // Find start of whitespace - while (i >= 0 && char.IsWhiteSpace(text[pos + i])) - i--; - // Return length of text before whitespace - return i + 1; - } - } -} diff --git a/src/Umbraco.Tests.Common/TestHelperBase.cs b/src/Umbraco.Tests.Common/TestHelperBase.cs index 511b100137..0357b7f4ba 100644 --- a/src/Umbraco.Tests.Common/TestHelperBase.cs +++ b/src/Umbraco.Tests.Common/TestHelperBase.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Reflection; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Moq; @@ -19,6 +20,7 @@ using Umbraco.Net; using Umbraco.Core.Persistence; using Umbraco.Core.Serialization; using Umbraco.Core.Strings; +using Umbraco.Infrastructure.Composing; using Umbraco.Web; using Umbraco.Web.Routing; using Umbraco.Tests.Common.Builders; @@ -122,7 +124,7 @@ namespace Umbraco.Tests.Common public IRegister GetRegister() { - return RegisterFactory.Create(new GlobalSettings()); + return ServiceCollectionRegistryAdapter.Wrap(new ServiceCollection()); } public abstract IHostingEnvironment GetHostingEnvironment(); diff --git a/src/Umbraco.Tests.Common/Testing/UmbracoTestAttribute.cs b/src/Umbraco.Tests.Common/Testing/UmbracoTestAttribute.cs index 9248a45d78..f5983ddca6 100644 --- a/src/Umbraco.Tests.Common/Testing/UmbracoTestAttribute.cs +++ b/src/Umbraco.Tests.Common/Testing/UmbracoTestAttribute.cs @@ -62,7 +62,7 @@ namespace Umbraco.Tests.Testing throw new ArgumentException(nameof(other)); base.Merge(other); - + _boot.Set(attr.Boot); _mapper.Set(attr._mapper); _publishedRepositoryEvents.Set(attr._publishedRepositoryEvents); _logger.Set(attr._logger); diff --git a/src/Umbraco.Tests.Integration/RuntimeTests.cs b/src/Umbraco.Tests.Integration/RuntimeTests.cs index edbecad51e..88d000b3a8 100644 --- a/src/Umbraco.Tests.Integration/RuntimeTests.cs +++ b/src/Umbraco.Tests.Integration/RuntimeTests.cs @@ -79,7 +79,7 @@ namespace Umbraco.Tests.Integration testHelper.GetHostingEnvironment(), testHelper.GetBackOfficeInfo(), testHelper.DbProviderFactoryCreator, testHelper.MainDom, testHelper.GetTypeFinder(), AppCaches.NoCache); - coreRuntime.Configure(umbracoContainer); + coreRuntime.Configure(umbracoContainer.Services); Assert.IsTrue(coreRuntime.MainDom.IsMainDom); Assert.IsNull(coreRuntime.State.BootFailedException); @@ -88,8 +88,7 @@ namespace Umbraco.Tests.Integration Assert.IsFalse(MyComponent.IsInit); Assert.IsFalse(MyComponent.IsTerminated); - - coreRuntime.Start(); + coreRuntime.Start(umbracoContainer.Services.BuildServiceProvider()); Assert.IsTrue(MyComponent.IsInit); Assert.IsFalse(MyComponent.IsTerminated); @@ -120,7 +119,7 @@ namespace Umbraco.Tests.Integration // TODO: MSDI - cleanup after initial merge. var register = new ServiceCollectionRegistryAdapter(services); - services.AddUmbracoCore(webHostEnvironment, register, GetType().Assembly, AppCaches.NoCache, testHelper.GetLoggingConfiguration(), hostContext.Configuration,out _); + services.AddUmbracoCore(webHostEnvironment, register, GetType().Assembly, AppCaches.NoCache, testHelper.GetLoggingConfiguration(), hostContext.Configuration); }); var host = await hostBuilder.StartAsync(); @@ -161,7 +160,7 @@ namespace Umbraco.Tests.Integration services.AddUmbracoConfiguration(hostContext.Configuration); // TODO: MSDI - cleanup after initial merge. var register = new ServiceCollectionRegistryAdapter(services); - services.AddUmbracoCore(webHostEnvironment, register, GetType().Assembly, AppCaches.NoCache, testHelper.GetLoggingConfiguration(),hostContext.Configuration, out _); + services.AddUmbracoCore(webHostEnvironment, register, GetType().Assembly, AppCaches.NoCache, testHelper.GetLoggingConfiguration(),hostContext.Configuration); }); var host = await hostBuilder.StartAsync(); diff --git a/src/Umbraco.Tests.Integration/TestServerTest/UmbracoBuilderExtensions.cs b/src/Umbraco.Tests.Integration/TestServerTest/UmbracoBuilderExtensions.cs index 62585e1423..50918034d5 100644 --- a/src/Umbraco.Tests.Integration/TestServerTest/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Tests.Integration/TestServerTest/UmbracoBuilderExtensions.cs @@ -1,7 +1,5 @@ using System; using Umbraco.Core.Cache; -using Umbraco.Core.Composing.LightInject; -using Umbraco.Core.Configuration.Models; using Umbraco.Core.Runtime; using Umbraco.Extensions; using Umbraco.Infrastructure.Composing; @@ -52,8 +50,7 @@ namespace Umbraco.Tests.Integration.TestServerTest dbInstallEventHandler); // DB Installation event handler return runtime; - }, - out _); + }); }); } } diff --git a/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs b/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs index 6e83e57c2c..7e6585c2c2 100644 --- a/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs +++ b/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs @@ -68,9 +68,9 @@ namespace Umbraco.Tests.Integration.Testing /// private ILocalizedTextService GetLocalizedTextService(IFactory factory) { - var globalSettings = factory.GetInstance>(); - var loggerFactory = factory.GetInstance(); - var appCaches = factory.GetInstance(); + var globalSettings = factory.GetRequiredService>(); + var loggerFactory = factory.GetRequiredService(); + var appCaches = factory.GetRequiredService(); var localizedTextService = new LocalizedTextService( new Lazy(() => diff --git a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs index eed3be9689..f949104ee0 100644 --- a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs +++ b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs @@ -6,7 +6,6 @@ using Microsoft.Extensions.Hosting; using NUnit.Framework; using Umbraco.Core.Cache; using Umbraco.Core.Composing; -using Umbraco.Core.Composing.LightInject; using Umbraco.Core.Configuration; using Umbraco.Core.IO; using Umbraco.Core.Logging; @@ -250,8 +249,7 @@ namespace Umbraco.Tests.Integration.Testing AppCaches.NoCache, // Disable caches for integration tests TestHelper.GetLoggingConfiguration(), Configuration, - CreateTestRuntime, - out _); + CreateTestRuntime); services.AddSignalR(); diff --git a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/RelationRepositoryTest.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/RelationRepositoryTest.cs index 1989478186..4d761bdfc1 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/RelationRepositoryTest.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/RelationRepositoryTest.cs @@ -252,11 +252,11 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Persistence.Repositor [Test] public void Get_Paged_Child_Entities_By_Parent_Id() { - CreateTestDataForPagingTests(out var createdContent, out var createdMembers, out var createdMedia); + CreateTestDataForPagingTests(out var createdContent, out var createdMembers, out _); using (var scope = ScopeProvider.CreateScope()) { - var repository = CreateRepository(ScopeProvider, out var relationTypeRepository); + var repository = CreateRepository(ScopeProvider, out _); // Get parent entities for child id var parents = repository.GetPagedChildEntitiesByParentId(createdContent[0].Id, 0, 6, out var totalRecords).ToList(); diff --git a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceTests.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceTests.cs index 36b5e91f34..e4bc6bfc8d 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceTests.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceTests.cs @@ -443,6 +443,10 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services } [Test] + [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest, + PublishedRepositoryEvents = true, + WithApplication = true, + Boot = true)] public void Automatically_Track_Relations() { var mt = MediaTypeBuilder.CreateSimpleMediaType("testMediaType", "Test Media Type"); diff --git a/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj b/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj index 551d714807..f0beaa5828 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj +++ b/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj @@ -35,7 +35,6 @@ - diff --git a/src/Umbraco.Tests.UnitTests/TestHelpers/BaseUsingSqlSyntax.cs b/src/Umbraco.Tests.UnitTests/TestHelpers/BaseUsingSqlSyntax.cs index 749354ffde..aa041f7ac8 100644 --- a/src/Umbraco.Tests.UnitTests/TestHelpers/BaseUsingSqlSyntax.cs +++ b/src/Umbraco.Tests.UnitTests/TestHelpers/BaseUsingSqlSyntax.cs @@ -9,6 +9,7 @@ using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.SqlSyntax; +using Umbraco.Tests.UnitTests.TestHelpers; namespace Umbraco.Tests.TestHelpers { @@ -27,7 +28,7 @@ namespace Umbraco.Tests.TestHelpers [SetUp] public virtual void Setup() { - var container = TestHelper.GetRegister(); + var container = TestHelper.GetServiceCollection(); var typeLoader = TestHelper.GetMockedTypeLoader(); var composition = new Composition(container, typeLoader, Mock.Of(), Mock.Of(), TestHelper.IOHelper, AppCaches.NoCache); @@ -41,8 +42,8 @@ namespace Umbraco.Tests.TestHelpers var pocoMappers = new NPoco.MapperCollection { new PocoMapper() }; var pocoDataFactory = new FluentPocoDataFactory((type, iPocoDataFactory) => new PocoDataBuilder(type, pocoMappers).Init()); var sqlSyntax = new SqlServerSyntaxProvider(); - SqlContext = new SqlContext(sqlSyntax, DatabaseType.SqlServer2012, pocoDataFactory, new Lazy(() => factory.GetInstance())); - Mappers = factory.GetInstance(); + SqlContext = new SqlContext(sqlSyntax, DatabaseType.SqlServer2012, pocoDataFactory, new Lazy(() => factory.GetRequiredService())); + Mappers = factory.GetRequiredService(); } } } diff --git a/src/Umbraco.Tests.UnitTests/TestHelpers/CompositionExtenions.cs b/src/Umbraco.Tests.UnitTests/TestHelpers/CompositionExtenions.cs new file mode 100644 index 0000000000..cdcc2a88dc --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/TestHelpers/CompositionExtenions.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Core.Composing; +using Umbraco.Infrastructure.Composing; + +namespace Umbraco.Tests.UnitTests.TestHelpers +{ + public static class CompositionExtenions + { + public static IFactory CreateFactory(this Composition composition) + { + composition.RegisterBuilders(); + return ServiceProviderFactoryAdapter.Wrap(composition.Services.BuildServiceProvider()); + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/TestHelpers/TestHelper.cs b/src/Umbraco.Tests.UnitTests/TestHelpers/TestHelper.cs index 81accbf2ba..1ebead07c5 100644 --- a/src/Umbraco.Tests.UnitTests/TestHelpers/TestHelper.cs +++ b/src/Umbraco.Tests.UnitTests/TestHelpers/TestHelper.cs @@ -8,6 +8,7 @@ using System.Linq; using System.Reflection; using System.Threading; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.DependencyInjection; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -274,7 +275,7 @@ namespace Umbraco.Tests.TestHelpers public static IUmbracoVersion GetUmbracoVersion() => _testHelperInternal.GetUmbracoVersion(); - public static IRegister GetRegister() => _testHelperInternal.GetRegister(); + public static IServiceCollection GetServiceCollection() => new ServiceCollection(); public static IHostingEnvironment GetHostingEnvironment() => _testHelperInternal.GetHostingEnvironment(); diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Components/ComponentTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Components/ComponentTests.cs index 7b9c043be9..1f6827784f 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Components/ComponentTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Components/ComponentTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; @@ -17,6 +18,7 @@ using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Scoping; +using Umbraco.Infrastructure.Composing; using Umbraco.Tests.TestHelpers; namespace Umbraco.Tests.UnitTests.Umbraco.Core.Components @@ -45,19 +47,19 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Components var mediaFileSystem = Mock.Of(); var p = new ScopeProvider(f, fs, Options.Create(coreDebug), mediaFileSystem, loggerFactory.CreateLogger(), loggerFactory, typeFinder, NoAppCache.Instance); - mock.Setup(x => x.GetInstance(typeof (ILogger))).Returns(logger); - mock.Setup(x => x.GetInstance(typeof(ILoggerFactory))).Returns(loggerFactory); - mock.Setup(x => x.GetInstance(typeof (IProfilingLogger))).Returns(new ProfilingLogger(logger, Mock.Of())); - mock.Setup(x => x.GetInstance(typeof (IUmbracoDatabaseFactory))).Returns(f); - mock.Setup(x => x.GetInstance(typeof (IScopeProvider))).Returns(p); + mock.Setup(x => x.GetRequiredService(typeof (ILogger))).Returns(logger); + mock.Setup(x => x.GetRequiredService(typeof(ILoggerFactory))).Returns(loggerFactory); + mock.Setup(x => x.GetRequiredService(typeof (IProfilingLogger))).Returns(new ProfilingLogger(logger, Mock.Of())); + mock.Setup(x => x.GetRequiredService(typeof (IUmbracoDatabaseFactory))).Returns(f); + mock.Setup(x => x.GetRequiredService(typeof (IScopeProvider))).Returns(p); setup?.Invoke(mock); return mock.Object; } - private static IRegister MockRegister() + private static IServiceCollection MockRegister() { - return Mock.Of(); + return Mock.Of(); } private static TypeLoader MockTypeLoader() @@ -86,8 +88,8 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Components var factory = MockFactory(m => { - m.Setup(x => x.TryGetInstance(It.Is(t => t == typeof(ISomeResource)))).Returns(() => new SomeResource()); - m.Setup(x => x.GetInstance(It.IsAny())).Returns((type) => + m.Setup(x => x.GetService(It.Is(t => t == typeof(ISomeResource)))).Returns(() => new SomeResource()); + m.Setup(x => x.GetRequiredService(It.IsAny())).Returns((type) => { if (type == typeof(Composer1)) return new Composer1(); if (type == typeof(Composer5)) return new Composer5(); @@ -99,7 +101,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Components }); var builder = composition.WithCollectionBuilder(); - builder.RegisterWith(register); + builder.RegisterWith(ServiceCollectionRegistryAdapter.Wrap(register)); var components = builder.CreateCollection(factory); Assert.IsEmpty(components); @@ -208,8 +210,8 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Components var typeLoader = MockTypeLoader(); var factory = MockFactory(m => { - m.Setup(x => x.TryGetInstance(It.Is(t => t == typeof (ISomeResource)))).Returns(() => new SomeResource()); - m.Setup(x => x.GetInstance(It.IsAny())).Returns((type) => + m.Setup(x => x.GetService(It.Is(t => t == typeof (ISomeResource)))).Returns(() => new SomeResource()); + m.Setup(x => x.GetRequiredService(It.IsAny())).Returns((type) => { if (type == typeof(Composer1)) return new Composer1(); if (type == typeof(Composer5)) return new Composer5(); @@ -231,7 +233,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Components AssertTypeArray(TypeArray(), Composed); var builder = composition.WithCollectionBuilder(); - builder.RegisterWith(register); + builder.RegisterWith(ServiceCollectionRegistryAdapter.Wrap(register)); var components = builder.CreateCollection(factory); Assert.IsEmpty(Initialized); @@ -287,7 +289,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Components Composed.Clear(); composers.Compose(); var builder = composition.WithCollectionBuilder(); - builder.RegisterWith(register); + builder.RegisterWith(ServiceCollectionRegistryAdapter.Wrap(register)); var components = builder.CreateCollection(factory); Assert.AreEqual(3, Composed.Count); Assert.AreEqual(typeof(Composer4), Composed[0]); diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/CollectionBuildersTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/CollectionBuildersTests.cs index e046c15cb4..241ab5e6ec 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/CollectionBuildersTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/CollectionBuildersTests.cs @@ -1,13 +1,16 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Logging; +using Umbraco.Infrastructure.Composing; using Umbraco.Tests.TestHelpers; +using Umbraco.Tests.UnitTests.TestHelpers; namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing { @@ -28,7 +31,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing // factoryMock.Setup(x => x.GetInstance(typeof(Resolved4))).Returns(new Resolved4()); - var register = TestHelper.GetRegister(); + var register = TestHelper.GetServiceCollection(); _composition = new Composition(register, TestHelper.GetMockedTypeLoader(), Mock.Of(), Mock.Of(), TestHelper.IOHelper, AppCaches.NoCache); } @@ -355,10 +358,10 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing using (factory.BeginScope()) { - var col1 = factory.GetInstance(); + var col1 = factory.GetRequiredService(); AssertCollection(col1, typeof(Resolved1), typeof(Resolved2)); - var col2 = factory.GetInstance(); + var col2 = factory.GetRequiredService(); AssertCollection(col2, typeof(Resolved1), typeof(Resolved2)); AssertSameCollection(factory, col1, col2); @@ -379,10 +382,10 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing var factory = _composition.CreateFactory(); - var col1 = factory.GetInstance(); + var col1 = factory.GetRequiredService(); AssertCollection(col1, typeof(Resolved1), typeof(Resolved2)); - var col2 = factory.GetInstance(); + var col2 = factory.GetRequiredService(); AssertCollection(col1, typeof(Resolved1), typeof(Resolved2)); AssertNotSameCollection(col1, col2); @@ -414,23 +417,23 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing TestCollection col1A, col1B; - var factory = _composition.CreateFactory(); + var wrapper = (ServiceProviderFactoryAdapter)_composition.CreateFactory(); - using (factory.BeginScope()) + using (var scope = wrapper.ServiceProvider.CreateScope()) { - col1A = factory.GetInstance(); - col1B = factory.GetInstance(); + col1A = scope.ServiceProvider.GetRequiredService(); + col1B = scope.ServiceProvider.GetRequiredService(); AssertCollection(col1A, typeof(Resolved1), typeof(Resolved2)); AssertCollection(col1B, typeof(Resolved1), typeof(Resolved2)); - AssertSameCollection(factory, col1A, col1B); + AssertSameCollection(wrapper, col1A, col1B); } TestCollection col2; - using (factory.BeginScope()) + using (var scope = wrapper.ServiceProvider.CreateScope()) { - col2 = factory.GetInstance(); + col2 = scope.ServiceProvider.GetRequiredService(); } AssertCollection(col2, typeof(Resolved1), typeof(Resolved2)); @@ -475,8 +478,8 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing { Assert.AreSame(col1A[i], col2A[i]); - var itemA = factory.GetInstance(col1A[i].GetType()); - var itemB = factory.GetInstance(col2A[i].GetType()); + var itemA = factory.GetRequiredService(col1A[i].GetType()); + var itemB = factory.GetRequiredService(col2A[i].GetType()); Assert.AreSame(itemA, itemB); } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/ContainerConformingTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/ContainerConformingTests.cs deleted file mode 100644 index a091a22199..0000000000 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/ContainerConformingTests.cs +++ /dev/null @@ -1,387 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using NUnit.Framework; -using Umbraco.Core; -using Umbraco.Core.Composing; -using Umbraco.Tests.TestHelpers; - -namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing -{ - [TestFixture] - public class ContainerConformingTests - { - // tests that a container conforms - - private IRegister GetRegister() => TestHelper.GetRegister(); - - [Test] - public void CanRegisterAndGet() - { - var register = GetRegister(); - - register.Register(); - - var factory = register.CreateFactory(); - - var thing = factory.GetInstance(); - Assert.IsNotNull(thing); - Assert.IsInstanceOf(thing); - } - - [Test] - public void CanRegisterAndGetLazy() - { - var register = GetRegister(); - - register.Register(); - - var factory = register.CreateFactory(); - - var lazyThing = factory.GetInstance>(); - Assert.IsNotNull(lazyThing); - Assert.IsInstanceOf>(lazyThing); - var thing = lazyThing.Value; - Assert.IsNotNull(thing); - Assert.IsInstanceOf(thing); - } - - [Test] - public void CannotRegistedAndGetBase() - { - var register = GetRegister(); - - register.Register(); - - var factory = register.CreateFactory(); - - Assert.IsNull(factory.TryGetInstance()); - } - - [Test] - public void CannotRegisterAndGetInterface() - { - var register = GetRegister(); - - register.Register(); - - var factory = register.CreateFactory(); - - Assert.IsNull(factory.TryGetInstance()); - } - - [Test] - public void CanRegisterAndGetAllBase() - { - var register = GetRegister(); - - register.Register(); - - var factory = register.CreateFactory(); - - var things = factory.GetAllInstances(); - Assert.AreEqual(1, things.Count()); - - // lightInject: would be zero with option EnableVariance set to false - } - - [Test] - public void CanRegisterAndGetAllInterface() - { - var register = GetRegister(); - - register.Register(); - - var factory = register.CreateFactory(); - - var things = factory.GetAllInstances(); - Assert.AreEqual(1, things.Count()); - - // lightInject: would be zero with option EnableVariance set to false - } - - [Test] - public void CanRegisterBaseAndGet() - { - var register = GetRegister(); - - register.Register(); - - var factory = register.CreateFactory(); - - var thing = factory.GetInstance(); - Assert.IsNotNull(thing); - Assert.IsInstanceOf(thing); - } - - [Test] - public void CanRegisterInterfaceAndGet() - { - var register = GetRegister(); - - register.Register(); - - var factory = register.CreateFactory(); - - var thing = factory.GetInstance(); - Assert.IsNotNull(thing); - Assert.IsInstanceOf(thing); - } - - [Test] - public void NonSingletonServiceIsNotUnique() - { - var register = GetRegister(); - - register.Register(); - register.Register(); - - var factory = register.CreateFactory(); - - var things = factory.GetInstance>(); - Assert.AreEqual(2, things.Count()); - - Assert.IsNull(factory.TryGetInstance()); - } - - [Test] - public void SingletonServiceIsUnique() // FIXME: but what is LightInject actually doing - { - var register = GetRegister(); - - // FIXME: LightInject is 'unique' per serviceType+serviceName - // but that's not how all containers work - // and we should not rely on it - // if we need unique, use RegisterUnique - - // for Core services that ppl may want to redefine in components, - // it is important to be able to have a unique, singleton implementation, - // and to redefine it - how it's done at container's level depends - // on each container - - // redefine the service - register.Register(Lifetime.Singleton); - register.Register(Lifetime.Singleton); - - var factory = register.CreateFactory(); - - var things = factory.GetInstance>(); - Assert.AreEqual(1, things.Count()); - - var thing = factory.GetInstance(); - Assert.IsInstanceOf(thing); - } - - [Test] - public void SingletonImplementationIsNotUnique() - { - var register = GetRegister(); - - // define two implementations - register.Register(Lifetime.Singleton); - register.Register(Lifetime.Singleton); - - var factory = register.CreateFactory(); - - var things = factory.GetInstance>(); - Assert.AreEqual(2, things.Count()); - - Assert.IsNull(factory.TryGetInstance()); - } - - [Test] - public void ActualInstanceIsNotUnique() - { - var register = GetRegister(); - - // define two instances - register.Register(typeof(Thing1), new Thing1()); - register.Register(typeof(Thing1), new Thing2()); - - var factory = register.CreateFactory(); - - var things = factory.GetInstance>(); - //Assert.AreEqual(2, things.Count()); - Assert.AreEqual(1, things.Count()); // well, yes they are unique? - - Assert.IsNull(factory.TryGetInstance()); - } - - [Test] - public void InterfaceInstanceIsNotUnique() - { - var register = GetRegister(); - - // define two instances - register.Register(typeof(IThing), new Thing1()); - register.Register(typeof(IThing), new Thing2()); - - var factory = register.CreateFactory(); - - var things = factory.GetInstance>(); - //Assert.AreEqual(2, things.Count()); - Assert.AreEqual(1, things.Count()); // well, yes they are unique? - - //Assert.IsNull(factory.TryGetInstance()); - Assert.IsNotNull(factory.TryGetInstance()); // well, what? - } - - [Test] - public void CanInjectEnumerableOfBase() - { - var register = GetRegister(); - - register.Register(); - register.Register(); - register.Register(); - - var factory = register.CreateFactory(); - - var needThings = factory.GetInstance(); - Assert.AreEqual(2, needThings.Things.Count()); - } - - [Test] - public void CanGetEnumerableOfBase() - { - var register = GetRegister(); - - register.Register(); - register.Register(); - - var factory = register.CreateFactory(); - - var things = factory.GetInstance>(); - Assert.AreEqual(2, things. Count()); - } - - [Test] - public void CanGetEmptyEnumerableOfBase() - { - var register = GetRegister(); - var factory = register.CreateFactory(); - - var things = factory.GetInstance>(); - Assert.AreEqual(0, things.Count()); - } - - [Test] - public void CanGetEmptyAllInstancesOfBase() - { - var register = GetRegister(); - var factory = register.CreateFactory(); - - var things = factory.GetAllInstances(); - Assert.AreEqual(0, things.Count()); - } - - [Test] - public void CanTryGetEnumerableOfBase() - { - var register = GetRegister(); - - register.Register(); - register.Register(); - - var factory = register.CreateFactory(); - - var things = factory.TryGetInstance>(); - Assert.AreEqual(2, things.Count()); - } - - [Test] - public void CanRegisterSingletonInterface() - { - var register = GetRegister(); - register.Register(Lifetime.Singleton); - var factory = register.CreateFactory(); - var s1 = factory.GetInstance(); - var s2 = factory.GetInstance(); - Assert.AreSame(s1, s2); - } - - [Test] - public void CanRegisterSingletonClass() - { - var register = GetRegister(); - register.Register(Lifetime.Singleton); - var factory = register.CreateFactory(); - var s1 = factory.GetInstance(); - var s2 = factory.GetInstance(); - Assert.AreSame(s1, s2); - } - - [Test] - public void CanReRegisterSingletonInterface() - { - var register = GetRegister(); - register.Register(Lifetime.Singleton); - register.Register(Lifetime.Singleton); - var factory = register.CreateFactory(); - var s = factory.GetInstance(); - Assert.IsInstanceOf(s); - } - - [Test] - public void CanRegisterSingletonWithCreate() - { - var register = GetRegister(); - register.Register(c => c.CreateInstance(new Thing1()), Lifetime.Singleton); - var factory = register.CreateFactory(); - var s1 = factory.GetInstance(); - var s2 = factory.GetInstance(); - Assert.AreSame(s1, s2); - } - - [Test] - public void CanRegisterMultipleSameTypeParametersWithCreateInstance() - { - var register = GetRegister(); - - register.Register(c => - { - const string param1 = "param1"; - const string param2 = "param2"; - - return c.CreateInstance(param1, param2); - }); - - var factory = register.CreateFactory(); - var instance = factory.GetInstance(); - Assert.AreNotEqual(instance.Thing, instance.AnotherThing); - } - - public interface IThing { } - - public abstract class ThingBase : IThing { } - public class Thing1 : ThingBase { } - public class Thing2 : ThingBase { } - - public class Thing3 : ThingBase - { - public Thing3(Thing1 thing) { } - } - - public class NeedThings - { - public NeedThings(IEnumerable things) - { - Things = things; - } - - public IEnumerable Things { get; } - } - - public class Thing4 : ThingBase - { - public readonly string Thing; - public readonly string AnotherThing; - - public Thing4(string thing, string anotherThing) - { - Thing = thing; - AnotherThing = anotherThing; - } - } - } -} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/LazyCollectionBuilderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/LazyCollectionBuilderTests.cs index e1a3f75ba2..f73fcd83c0 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/LazyCollectionBuilderTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/LazyCollectionBuilderTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -8,15 +9,16 @@ using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Logging; using Umbraco.Tests.TestHelpers; +using Umbraco.Tests.UnitTests.TestHelpers; namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing { [TestFixture] public class LazyCollectionBuilderTests { - private IRegister CreateRegister() + private IServiceCollection CreateRegister() { - return TestHelper.GetRegister(); + return TestHelper.GetServiceCollection(); } // note @@ -37,13 +39,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing var factory = composition.CreateFactory(); - var values = factory.GetInstance(); + var values = factory.GetRequiredService(); Assert.AreEqual(3, values.Count()); Assert.IsTrue(values.Select(x => x.GetType()) .ContainsAll(new[] { typeof(TransientObject1), typeof(TransientObject2), typeof(TransientObject3) })); - var other = factory.GetInstance(); + var other = factory.GetRequiredService(); Assert.AreNotSame(values, other); // transient var o1 = other.FirstOrDefault(x => x is TransientObject1); Assert.IsFalse(values.Contains(o1)); // transient @@ -62,13 +64,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing var factory = composition.CreateFactory(); - var values = factory.GetInstance(); + var values = factory.GetRequiredService(); Assert.AreEqual(3, values.Count()); Assert.IsTrue(values.Select(x => x.GetType()) .ContainsAll(new[] { typeof(TransientObject1), typeof(TransientObject2), typeof(TransientObject3) })); - var other = factory.GetInstance(); + var other = factory.GetRequiredService(); Assert.AreNotSame(values, other); // transient var o1 = other.FirstOrDefault(x => x is TransientObject1); Assert.IsFalse(values.Contains(o1)); // transient @@ -88,13 +90,13 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing var factory = composition.CreateFactory(); - var values = factory.GetInstance(); + var values = factory.GetRequiredService(); Assert.AreEqual(3, values.Count()); Assert.IsTrue(values.Select(x => x.GetType()) .ContainsAll(new[] { typeof(TransientObject1), typeof(TransientObject2), typeof(TransientObject3) })); - var other = factory.GetInstance(); + var other = factory.GetRequiredService(); Assert.AreNotSame(values, other); // transient var o1 = other.FirstOrDefault(x => x is TransientObject1); Assert.IsFalse(values.Contains(o1)); // transient @@ -135,7 +137,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing var factory = composition.CreateFactory(); - var values = factory.GetInstance(); + var values = factory.GetRequiredService(); Assert.AreEqual(2, values.Count()); Assert.IsFalse(values.Select(x => x.GetType()) @@ -143,7 +145,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing Assert.IsTrue(values.Select(x => x.GetType()) .ContainsAll(new[] { typeof(TransientObject1), typeof(TransientObject2) })); - var other = factory.GetInstance(); + var other = factory.GetRequiredService(); Assert.AreNotSame(values, other); // transient var o1 = other.FirstOrDefault(x => x is TransientObject1); Assert.IsFalse(values.Contains(o1)); // transient diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/PackageActionCollectionTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/PackageActionCollectionTests.cs index a144f9340a..5b2aae9fc2 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/PackageActionCollectionTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/PackageActionCollectionTests.cs @@ -10,6 +10,7 @@ using Umbraco.Core.Composing; using Umbraco.Core.Logging; using Umbraco.Core.PackageActions; using Umbraco.Tests.TestHelpers; +using Umbraco.Tests.UnitTests.TestHelpers; namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing { @@ -19,7 +20,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing [Test] public void PackageActionCollectionBuilderWorks() { - var container = TestHelper.GetRegister(); + var container = TestHelper.GetServiceCollection(); var composition = new Composition(container, TestHelper.GetMockedTypeLoader(), Mock.Of(), Mock.Of(), TestHelper.IOHelper, AppCaches.NoCache); @@ -29,7 +30,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing var factory = composition.CreateFactory(); - var actions = factory.GetInstance(); + var actions = factory.GetRequiredService(); Assert.AreEqual(2, actions.Count()); // order is unspecified, but both must be there diff --git a/src/Umbraco.Tests/Cache/PublishedCache/PublishedContentCacheTests.cs b/src/Umbraco.Tests/Cache/PublishedCache/PublishedContentCacheTests.cs index 75e4d1cfd2..3ac7efd467 100644 --- a/src/Umbraco.Tests/Cache/PublishedCache/PublishedContentCacheTests.cs +++ b/src/Umbraco.Tests/Cache/PublishedCache/PublishedContentCacheTests.cs @@ -61,7 +61,7 @@ namespace Umbraco.Tests.Cache.PublishedCache _httpContextFactory = new FakeHttpContextFactory("~/Home"); var globalSettings = new GlobalSettings(); - var umbracoContextAccessor = Factory.GetInstance(); + var umbracoContextAccessor = Factory.GetRequiredService(); _xml = new XmlDocument(); _xml.LoadXml(GetXml()); @@ -70,7 +70,7 @@ namespace Umbraco.Tests.Cache.PublishedCache var domainCache = new DomainCache(Mock.Of(), DefaultCultureAccessor); var publishedShapshot = new PublishedSnapshot( new PublishedContentCache(xmlStore, domainCache, appCache, globalSettings, ContentTypesCache, null, VariationContextAccessor, null), - new PublishedMediaCache(xmlStore, Mock.Of(), Mock.Of(), appCache, ContentTypesCache, Factory.GetInstance(), umbracoContextAccessor, VariationContextAccessor), + new PublishedMediaCache(xmlStore, Mock.Of(), Mock.Of(), appCache, ContentTypesCache, Factory.GetRequiredService(), umbracoContextAccessor, VariationContextAccessor), new PublishedMemberCache(null, appCache, Mock.Of(), ContentTypesCache, Mock.Of(), VariationContextAccessor), domainCache); var publishedSnapshotService = new Mock(); diff --git a/src/Umbraco.Tests/Cache/PublishedCache/PublishedMediaCacheTests.cs b/src/Umbraco.Tests/Cache/PublishedCache/PublishedMediaCacheTests.cs index 20f6892e0c..810532367a 100644 --- a/src/Umbraco.Tests/Cache/PublishedCache/PublishedMediaCacheTests.cs +++ b/src/Umbraco.Tests/Cache/PublishedCache/PublishedMediaCacheTests.cs @@ -81,7 +81,7 @@ namespace Umbraco.Tests.Cache.PublishedCache var mChild2 = MakeNewMedia("Child2", mType, user, mRoot2.Id); var ctx = GetUmbracoContext("/test"); - var cache = new PublishedMediaCache(new XmlStore((XmlDocument) null, null, null, null, HostingEnvironment), ServiceContext.MediaService, ServiceContext.UserService, new DictionaryAppCache(), ContentTypesCache, Factory.GetInstance(), Factory.GetInstance(), VariationContextAccessor); + var cache = new PublishedMediaCache(new XmlStore((XmlDocument) null, null, null, null, HostingEnvironment), ServiceContext.MediaService, ServiceContext.UserService, new DictionaryAppCache(), ContentTypesCache, Factory.GetRequiredService(), Factory.GetRequiredService(), VariationContextAccessor); var roots = cache.GetAtRoot(); Assert.AreEqual(2, roots.Count()); Assert.IsTrue(roots.Select(x => x.Id).ContainsAll(new[] {mRoot1.Id, mRoot2.Id})); @@ -99,7 +99,7 @@ namespace Umbraco.Tests.Cache.PublishedCache //var publishedMedia = PublishedMediaTests.GetNode(mRoot.Id, GetUmbracoContext("/test", 1234)); var umbracoContext = GetUmbracoContext("/test"); - var cache = new PublishedMediaCache(new XmlStore((XmlDocument)null, null, null, null, HostingEnvironment), ServiceContext.MediaService, ServiceContext.UserService, new DictionaryAppCache(), ContentTypesCache, Factory.GetInstance(), Factory.GetInstance(), VariationContextAccessor); + var cache = new PublishedMediaCache(new XmlStore((XmlDocument)null, null, null, null, HostingEnvironment), ServiceContext.MediaService, ServiceContext.UserService, new DictionaryAppCache(), ContentTypesCache, Factory.GetRequiredService(), Factory.GetRequiredService(), VariationContextAccessor); var publishedMedia = cache.GetById(mRoot.Id); Assert.IsNotNull(publishedMedia); @@ -210,7 +210,7 @@ namespace Umbraco.Tests.Cache.PublishedCache var result = new SearchResult("1234", 1, () => fields.ToDictionary(x => x.Key, x => new List { x.Value })); - var store = new PublishedMediaCache(new XmlStore((XmlDocument)null, null, null, null, HostingEnvironment), ServiceContext.MediaService, ServiceContext.UserService, new DictionaryAppCache(), ContentTypesCache, Factory.GetInstance(), Factory.GetInstance(), VariationContextAccessor); + var store = new PublishedMediaCache(new XmlStore((XmlDocument)null, null, null, null, HostingEnvironment), ServiceContext.MediaService, ServiceContext.UserService, new DictionaryAppCache(), ContentTypesCache, Factory.GetRequiredService(), Factory.GetRequiredService(), VariationContextAccessor); var doc = store.CreateFromCacheValues(store.ConvertFromSearchResult(result)); DoAssert(doc, 1234, key, null, 0, "/media/test.jpg", "Image", 23, "Shannon", "Shannon", "-1,1234", DateTime.Parse("2012-07-17T10:34:09"), DateTime.Parse("2012-07-16T10:34:09"), 2); @@ -226,7 +226,7 @@ namespace Umbraco.Tests.Cache.PublishedCache var xmlDoc = GetMediaXml(); ((XmlElement)xmlDoc.DocumentElement.FirstChild).SetAttribute("key", key.ToString()); var navigator = xmlDoc.SelectSingleNode("/root/Image").CreateNavigator(); - var cache = new PublishedMediaCache(new XmlStore((XmlDocument)null, null, null, null, HostingEnvironment), ServiceContext.MediaService, ServiceContext.UserService, new DictionaryAppCache(), ContentTypesCache, Factory.GetInstance(), Factory.GetInstance(),VariationContextAccessor); + var cache = new PublishedMediaCache(new XmlStore((XmlDocument)null, null, null, null, HostingEnvironment), ServiceContext.MediaService, ServiceContext.UserService, new DictionaryAppCache(), ContentTypesCache, Factory.GetRequiredService(), Factory.GetRequiredService(),VariationContextAccessor); var doc = cache.CreateFromCacheValues(cache.ConvertFromXPathNavigator(navigator, true)); DoAssert(doc, 2000, key, null, 2, "image1", "Image", 23, "Shannon", "Shannon", "-1,2000", DateTime.Parse("2012-06-12T14:13:17"), DateTime.Parse("2012-07-20T18:50:43"), 1); diff --git a/src/Umbraco.Tests/IO/FileSystemsTests.cs b/src/Umbraco.Tests/IO/FileSystemsTests.cs index d35f950e75..039ded5e4e 100644 --- a/src/Umbraco.Tests/IO/FileSystemsTests.cs +++ b/src/Umbraco.Tests/IO/FileSystemsTests.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Text; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Moq; @@ -14,7 +15,9 @@ using Umbraco.Core.IO; using Umbraco.Core.IO.MediaPathSchemes; using Umbraco.Core.Logging; using Umbraco.Core.Services; +using Umbraco.Infrastructure.Composing; using Umbraco.Tests.TestHelpers; +using Umbraco.Web; using FileSystems = Umbraco.Core.IO.FileSystems; namespace Umbraco.Tests.IO @@ -30,10 +33,17 @@ namespace Umbraco.Tests.IO { _register = TestHelper.GetRegister(); - var composition = new Composition(_register, TestHelper.GetMockedTypeLoader(), Mock.Of(), Mock.Of(), TestHelper.IOHelper, AppCaches.NoCache); + var composition = new Composition( + (_register as ServiceCollectionRegistryAdapter).Services, + TestHelper.GetMockedTypeLoader(), + Mock.Of(), + Mock.Of(), + TestHelper.IOHelper, + AppCaches.NoCache + ); composition.Register(_ => Mock.Of()); - composition.Register(NullLoggerFactory.Instance); + composition.Services.AddTransient(); composition.Register(typeof(ILogger<>), typeof(Logger<>)); composition.Register(_ => TestHelper.ShortStringHelper); composition.Register(_ => TestHelper.IOHelper); @@ -63,34 +73,34 @@ namespace Umbraco.Tests.IO _register.DisposeIfDisposable(); } - private FileSystems FileSystems => _factory.GetInstance(); + private FileSystems FileSystems => _factory.GetRequiredService(); [Test] public void Can_Get_MediaFileSystem() { - var fileSystem = _factory.GetInstance(); + var fileSystem = _factory.GetRequiredService(); Assert.NotNull(fileSystem); } [Test] public void Can_Get_IMediaFileSystem() { - var fileSystem = _factory.GetInstance(); + var fileSystem = _factory.GetRequiredService(); Assert.NotNull(fileSystem); } [Test] public void IMediaFileSystem_Is_Singleton() { - var fileSystem1 = _factory.GetInstance(); - var fileSystem2 = _factory.GetInstance(); + var fileSystem1 = _factory.GetRequiredService(); + var fileSystem2 = _factory.GetRequiredService(); Assert.AreSame(fileSystem1, fileSystem2); } [Test] public void Can_Unwrap_MediaFileSystem() { - var fileSystem = _factory.GetInstance(); + var fileSystem = _factory.GetRequiredService(); var unwrapped = fileSystem.Unwrap(); Assert.IsNotNull(unwrapped); var physical = unwrapped as PhysicalFileSystem; @@ -100,13 +110,13 @@ namespace Umbraco.Tests.IO [Test] public void Can_Delete_MediaFiles() { - var fs = _factory.GetInstance(); + var fs = _factory.GetRequiredService(); var ms = new MemoryStream(Encoding.UTF8.GetBytes("test")); var virtPath = fs.GetMediaPath("file.txt", Guid.NewGuid(), Guid.NewGuid()); fs.AddFile(virtPath, ms); // ~/media/1234/file.txt exists - var ioHelper = _factory.GetInstance(); + var ioHelper = _factory.GetRequiredService(); var physPath = ioHelper.MapPath(Path.Combine("media", virtPath)); Assert.IsTrue(File.Exists(physPath)); @@ -114,7 +124,7 @@ namespace Umbraco.Tests.IO fs.DeleteMediaFiles(new[] { virtPath }); Assert.IsFalse(File.Exists(physPath)); - var scheme = _factory.GetInstance(); + var scheme = _factory.GetRequiredService(); if (scheme is UniqueMediaPathScheme) { // ~/media/1234 is *not* gone diff --git a/src/Umbraco.Tests/Issues/U9560.cs b/src/Umbraco.Tests/Issues/U9560.cs index c750201b0c..279d6798aa 100644 --- a/src/Umbraco.Tests/Issues/U9560.cs +++ b/src/Umbraco.Tests/Issues/U9560.cs @@ -27,7 +27,7 @@ namespace Umbraco.Tests.Issues var aliasName = string.Empty; // read fields, same as what we do with PetaPoco Fetch - using (var db = Factory.GetInstance().CreateDatabase()) + using (var db = Factory.GetRequiredService().CreateDatabase()) { db.OpenSharedConnection(); try @@ -55,7 +55,7 @@ namespace Umbraco.Tests.Issues Assert.AreEqual("Alias", aliasName); // try differently - using (var db = Factory.GetInstance().CreateDatabase()) + using (var db = Factory.GetRequiredService().CreateDatabase()) { db.OpenSharedConnection(); try diff --git a/src/Umbraco.Tests/Models/ContentXmlTest.cs b/src/Umbraco.Tests/Models/ContentXmlTest.cs index 70307b9bad..0aff0e7ad3 100644 --- a/src/Umbraco.Tests/Models/ContentXmlTest.cs +++ b/src/Umbraco.Tests/Models/ContentXmlTest.cs @@ -29,7 +29,7 @@ namespace Umbraco.Tests.Models var urlName = content.GetUrlSegment(ShortStringHelper, new[]{new DefaultUrlSegmentProvider(ShortStringHelper) }); // Act - XElement element = content.ToXml(Factory.GetInstance()); + XElement element = content.ToXml(Factory.GetRequiredService()); // Assert Assert.That(element, Is.Not.Null); diff --git a/src/Umbraco.Tests/Models/MediaXmlTest.cs b/src/Umbraco.Tests/Models/MediaXmlTest.cs index 646dc7f2a0..83184dcb82 100644 --- a/src/Umbraco.Tests/Models/MediaXmlTest.cs +++ b/src/Umbraco.Tests/Models/MediaXmlTest.cs @@ -51,7 +51,7 @@ namespace Umbraco.Tests.Models var urlName = media.GetUrlSegment(ShortStringHelper, new[] { new DefaultUrlSegmentProvider(ShortStringHelper) }); // Act - XElement element = media.ToXml(Factory.GetInstance()); + XElement element = media.ToXml(Factory.GetRequiredService()); // Assert Assert.That(element, Is.Not.Null); diff --git a/src/Umbraco.Tests/Packaging/PackageDataInstallationTests.cs b/src/Umbraco.Tests/Packaging/PackageDataInstallationTests.cs index 6aaab9a698..0576aa45d6 100644 --- a/src/Umbraco.Tests/Packaging/PackageDataInstallationTests.cs +++ b/src/Umbraco.Tests/Packaging/PackageDataInstallationTests.cs @@ -72,7 +72,7 @@ namespace Umbraco.Tests.Packaging Composition.ComposeFileSystems(); } - private PackageDataInstallation PackageDataInstallation => Factory.GetInstance(); + private PackageDataInstallation PackageDataInstallation => Factory.GetRequiredService(); [Test] public void Can_Import_uBlogsy_ContentTypes_And_Verify_Structure() @@ -425,7 +425,7 @@ namespace Umbraco.Tests.Packaging string strXml = ImportResources.SingleDocType; var docTypeElement = XElement.Parse(strXml); - var serializer = Factory.GetInstance(); + var serializer = Factory.GetRequiredService(); // Act var contentTypes = PackageDataInstallation.ImportDocumentType(docTypeElement, 0); diff --git a/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs b/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs index 4dfc3503aa..d2b88fabff 100644 --- a/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs +++ b/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs @@ -55,11 +55,11 @@ namespace Umbraco.Tests.Packaging NullLoggerFactory.Instance.CreateLogger(), NullLoggerFactory.Instance, ServiceContext.FileService, ServiceContext.MacroService, ServiceContext.LocalizationService, ServiceContext.DataTypeService, ServiceContext.EntityService, ServiceContext.ContentTypeService, ServiceContext.ContentService, - Factory.GetInstance(), - Factory.GetInstance(), - Factory.GetInstance(), + Factory.GetRequiredService(), + Factory.GetRequiredService(), + Factory.GetRequiredService(), Microsoft.Extensions.Options.Options.Create(new GlobalSettings()), - Factory.GetInstance()); + Factory.GetRequiredService()); private IPackageInstallation PackageInstallation => new PackageInstallation( PackageDataInstallation, diff --git a/src/Umbraco.Tests/Published/ConvertersTests.cs b/src/Umbraco.Tests/Published/ConvertersTests.cs index 3ddefd9fa5..1541f5d446 100644 --- a/src/Umbraco.Tests/Published/ConvertersTests.cs +++ b/src/Umbraco.Tests/Published/ConvertersTests.cs @@ -15,8 +15,10 @@ using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; +using Umbraco.Infrastructure.Composing; using Umbraco.Tests.PublishedContent; using Umbraco.Tests.TestHelpers; +using Umbraco.Web; using Umbraco.Web.PublishedCache; namespace Umbraco.Tests.Published @@ -32,7 +34,14 @@ namespace Umbraco.Tests.Published // Current.Reset(); var register = TestHelper.GetRegister(); - var composition = new Composition(register, TestHelper.GetMockedTypeLoader(), Mock.Of(), Mock.Of(), Mock.Of(), AppCaches.NoCache); + var composition = new Composition( + (register as ServiceCollectionRegistryAdapter).Services, + TestHelper.GetMockedTypeLoader(), + Mock.Of(), + Mock.Of(), + Mock.Of(), + AppCaches.NoCache + ); composition.WithCollectionBuilder() .Append() @@ -45,7 +54,7 @@ namespace Umbraco.Tests.Published }, Mock.Of()); register.Register(f => factory); - var registerFactory = composition.CreateFactory(); + var cacheMock = new Mock(); var cacheContent = new Dictionary(); @@ -56,7 +65,8 @@ namespace Umbraco.Tests.Published publishedSnapshotAccessorMock.Setup(x => x.PublishedSnapshot).Returns(publishedSnapshotMock.Object); register.Register(f => publishedSnapshotAccessorMock.Object); - var converters = registerFactory.GetInstance(); + var registerFactory = composition.CreateFactory(); + var converters = registerFactory.GetRequiredService(); var dataTypeServiceMock = new Mock(); var dataType1 = new DataType(new VoidEditor(NullLoggerFactory.Instance, dataTypeServiceMock.Object, @@ -93,7 +103,7 @@ namespace Umbraco.Tests.Published Properties = new[] { new SolidPublishedProperty { Alias = "prop2", SolidHasValue = true, SolidValue = "1003" } } }; - var publishedModelFactory = registerFactory.GetInstance(); + var publishedModelFactory = registerFactory.GetRequiredService(); cacheContent[cnt1.Id] = cnt1.CreateModel(publishedModelFactory); cacheContent[cnt2.Id] = cnt2.CreateModel(publishedModelFactory); diff --git a/src/Umbraco.Tests/PublishedContent/NuCacheChildrenTests.cs b/src/Umbraco.Tests/PublishedContent/NuCacheChildrenTests.cs index 72f7d0e46c..9e36e867a4 100644 --- a/src/Umbraco.Tests/PublishedContent/NuCacheChildrenTests.cs +++ b/src/Umbraco.Tests/PublishedContent/NuCacheChildrenTests.cs @@ -61,7 +61,7 @@ namespace Umbraco.Tests.PublishedContent var hostingEnvironment = Mock.Of(); - Mock.Get(factory).Setup(x => x.GetInstance(typeof(IPublishedModelFactory))).Returns(PublishedModelFactory); + Mock.Get(factory).Setup(x => x.GetRequiredService(typeof(IPublishedModelFactory))).Returns(PublishedModelFactory); var runtime = Mock.Of(); Mock.Get(runtime).Setup(x => x.Level).Returns(RuntimeLevel.Run); @@ -172,7 +172,7 @@ namespace Umbraco.Tests.PublishedContent // invariant is the current default _variationAccesor.VariationContext = new VariationContext(); - Mock.Get(factory).Setup(x => x.GetInstance(typeof(IVariationContextAccessor))).Returns(_variationAccesor); + Mock.Get(factory).Setup(x => x.GetRequiredService(typeof(IVariationContextAccessor))).Returns(_variationAccesor); } private IEnumerable GetNestedVariantKits() diff --git a/src/Umbraco.Tests/PublishedContent/NuCacheTests.cs b/src/Umbraco.Tests/PublishedContent/NuCacheTests.cs index 6b97f4d1ed..4d5fcc6515 100644 --- a/src/Umbraco.Tests/PublishedContent/NuCacheTests.cs +++ b/src/Umbraco.Tests/PublishedContent/NuCacheTests.cs @@ -53,7 +53,7 @@ namespace Umbraco.Tests.PublishedContent Current.Factory = factory; var publishedModelFactory = new NoopPublishedModelFactory(); - Mock.Get(factory).Setup(x => x.GetInstance(typeof(IPublishedModelFactory))).Returns(publishedModelFactory); + Mock.Get(factory).Setup(x => x.GetRequiredService(typeof(IPublishedModelFactory))).Returns(publishedModelFactory); // create a content node kit var kit = new ContentNodeKit @@ -212,7 +212,7 @@ namespace Umbraco.Tests.PublishedContent // invariant is the current default _variationAccesor.VariationContext = new VariationContext(); - Mock.Get(factory).Setup(x => x.GetInstance(typeof(IVariationContextAccessor))).Returns(_variationAccesor); + Mock.Get(factory).Setup(x => x.GetRequiredService(typeof(IVariationContextAccessor))).Returns(_variationAccesor); } [Test] diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs index 92e17ec9cd..2084a809b3 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs @@ -45,7 +45,7 @@ namespace Umbraco.Tests.PublishedContent { base.Compose(); - Composition.RegisterUnique(f => new PublishedModelFactory(f.GetInstance().GetTypes(), f.GetInstance())); + Composition.RegisterUnique(f => new PublishedModelFactory(f.GetRequiredService().GetTypes(), f.GetRequiredService())); } protected override TypeLoader CreateTypeLoader(IIOHelper ioHelper, ITypeFinder typeFinder, IAppPolicyCache runtimeCache, ILogger logger, IProfilingLogger profilingLogger , IHostingEnvironment hostingEnvironment) diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs index 058cda093e..b8011d160d 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs @@ -43,7 +43,7 @@ namespace Umbraco.Tests.PublishedContent { base.Initialize(); - var converters = Factory.GetInstance(); + var converters = Factory.GetRequiredService(); var umbracoContextAccessor = Mock.Of(); var publishedUrlProvider = Mock.Of(); var loggerFactory = NullLoggerFactory.Instance; diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs index 982be79a33..5bf7120e02 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs @@ -44,7 +44,7 @@ namespace Umbraco.Tests.PublishedContent _publishedSnapshotAccessorMock = new Mock(); Composition.RegisterUnique(_publishedSnapshotAccessorMock.Object); - Composition.RegisterUnique(f => new PublishedModelFactory(f.GetInstance().GetTypes(), f.GetInstance())); + Composition.RegisterUnique(f => new PublishedModelFactory(f.GetRequiredService().GetTypes(), f.GetRequiredService())); Composition.RegisterUnique(); Composition.RegisterUnique(); @@ -73,7 +73,7 @@ namespace Umbraco.Tests.PublishedContent { base.Initialize(); - var factory = Factory.GetInstance() as PublishedContentTypeFactory; + var factory = Factory.GetRequiredService() as PublishedContentTypeFactory; // need to specify a custom callback for unit tests // AutoPublishedContentTypes generates properties automatically @@ -904,7 +904,7 @@ namespace Umbraco.Tests.PublishedContent [Test] public void FragmentProperty() { - var factory = Factory.GetInstance() as PublishedContentTypeFactory; + var factory = Factory.GetRequiredService() as PublishedContentTypeFactory; IEnumerable CreatePropertyTypes(IPublishedContentType contentType) { @@ -928,7 +928,7 @@ namespace Umbraco.Tests.PublishedContent [Test] public void Fragment2() { - var factory = Factory.GetInstance() as PublishedContentTypeFactory; + var factory = Factory.GetRequiredService() as PublishedContentTypeFactory; IEnumerable CreatePropertyTypes(IPublishedContentType contentType) { diff --git a/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs index 854e24d162..a8eaff34bf 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs @@ -72,7 +72,7 @@ namespace Umbraco.Tests.PublishedContent { var cache = new PublishedMediaCache(new XmlStore((XmlDocument)null, null, null, null, HostingEnvironment), ServiceContext.MediaService, ServiceContext.UserService, new DictionaryAppCache(), ContentTypesCache, - Factory.GetInstance(), Factory.GetInstance(), VariationContextAccessor); + Factory.GetRequiredService(), Factory.GetRequiredService(), VariationContextAccessor); var doc = cache.GetById(id); Assert.IsNotNull(doc); return doc; @@ -117,7 +117,7 @@ namespace Umbraco.Tests.PublishedContent [Test] public void Ensure_Children_Sorted_With_Examine() { - var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockMediaService()); + var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetRequiredService(), IndexInitializer.GetMockMediaService()); using (var luceneDir = new RandomIdRamDirectory()) using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, HostingEnvironment, RuntimeState, luceneDir, @@ -129,7 +129,7 @@ namespace Umbraco.Tests.PublishedContent var searcher = indexer.GetSearcher(); var ctx = GetUmbracoContext("/test"); - var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, new DictionaryAppCache(), ContentTypesCache, Factory.GetInstance(), Factory.GetInstance()); + var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, new DictionaryAppCache(), ContentTypesCache, Factory.GetRequiredService(), Factory.GetRequiredService()); //we are using the media.xml media to test the examine results implementation, see the media.xml file in the ExamineHelpers namespace var publishedMedia = cache.GetById(1111); @@ -146,7 +146,7 @@ namespace Umbraco.Tests.PublishedContent [Test] public void Do_Not_Find_In_Recycle_Bin() { - var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockMediaService()); + var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetRequiredService(), IndexInitializer.GetMockMediaService()); using (var luceneDir = new RandomIdRamDirectory()) using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, HostingEnvironment, RuntimeState, luceneDir, @@ -159,7 +159,7 @@ namespace Umbraco.Tests.PublishedContent var searcher = indexer.GetSearcher(); var ctx = GetUmbracoContext("/test"); - var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, new DictionaryAppCache(), ContentTypesCache, Factory.GetInstance(), Factory.GetInstance()); + var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, new DictionaryAppCache(), ContentTypesCache, Factory.GetRequiredService(), Factory.GetRequiredService()); //ensure it is found var publishedMedia = cache.GetById(3113); @@ -194,7 +194,7 @@ namespace Umbraco.Tests.PublishedContent [Test] public void Children_With_Examine() { - var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockMediaService()); + var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetRequiredService(), IndexInitializer.GetMockMediaService()); using (var luceneDir = new RandomIdRamDirectory()) using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, HostingEnvironment, RuntimeState, luceneDir, @@ -206,7 +206,7 @@ namespace Umbraco.Tests.PublishedContent var searcher = indexer.GetSearcher(); var ctx = GetUmbracoContext("/test"); - var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, new DictionaryAppCache(), ContentTypesCache, Factory.GetInstance(), Factory.GetInstance()); + var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, new DictionaryAppCache(), ContentTypesCache, Factory.GetRequiredService(), Factory.GetRequiredService()); //we are using the media.xml media to test the examine results implementation, see the media.xml file in the ExamineHelpers namespace var publishedMedia = cache.GetById(1111); @@ -222,7 +222,7 @@ namespace Umbraco.Tests.PublishedContent [Test] public void Descendants_With_Examine() { - var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockMediaService()); + var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetRequiredService(), IndexInitializer.GetMockMediaService()); using (var luceneDir = new RandomIdRamDirectory()) using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, HostingEnvironment, RuntimeState, luceneDir, @@ -234,7 +234,7 @@ namespace Umbraco.Tests.PublishedContent var searcher = indexer.GetSearcher(); var ctx = GetUmbracoContext("/test"); - var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, new DictionaryAppCache(), ContentTypesCache, Factory.GetInstance(), Factory.GetInstance()); + var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, new DictionaryAppCache(), ContentTypesCache, Factory.GetRequiredService(), Factory.GetRequiredService()); //we are using the media.xml media to test the examine results implementation, see the media.xml file in the ExamineHelpers namespace var publishedMedia = cache.GetById(1111); @@ -250,7 +250,7 @@ namespace Umbraco.Tests.PublishedContent [Test] public void DescendantsOrSelf_With_Examine() { - var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockMediaService()); + var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetRequiredService(), IndexInitializer.GetMockMediaService()); using (var luceneDir = new RandomIdRamDirectory()) using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, HostingEnvironment, RuntimeState, luceneDir, @@ -262,7 +262,7 @@ namespace Umbraco.Tests.PublishedContent var searcher = indexer.GetSearcher(); var ctx = GetUmbracoContext("/test"); - var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, new DictionaryAppCache(), ContentTypesCache, Factory.GetInstance(), Factory.GetInstance()); + var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, new DictionaryAppCache(), ContentTypesCache, Factory.GetRequiredService(), Factory.GetRequiredService()); //we are using the media.xml media to test the examine results implementation, see the media.xml file in the ExamineHelpers namespace var publishedMedia = cache.GetById(1111); @@ -278,7 +278,7 @@ namespace Umbraco.Tests.PublishedContent [Test] public void Ancestors_With_Examine() { - var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockMediaService()); + var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetRequiredService(), IndexInitializer.GetMockMediaService()); using (var luceneDir = new RandomIdRamDirectory()) @@ -291,7 +291,7 @@ namespace Umbraco.Tests.PublishedContent var ctx = GetUmbracoContext("/test"); var searcher = indexer.GetSearcher(); - var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, new DictionaryAppCache(), ContentTypesCache, Factory.GetInstance(), Factory.GetInstance()); + var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, new DictionaryAppCache(), ContentTypesCache, Factory.GetRequiredService(), Factory.GetRequiredService()); //we are using the media.xml media to test the examine results implementation, see the media.xml file in the ExamineHelpers namespace var publishedMedia = cache.GetById(3113); @@ -304,7 +304,7 @@ namespace Umbraco.Tests.PublishedContent [Test] public void AncestorsOrSelf_With_Examine() { - var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockMediaService()); + var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetRequiredService(), IndexInitializer.GetMockMediaService()); using (var luceneDir = new RandomIdRamDirectory()) using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, HostingEnvironment, RuntimeState, luceneDir, @@ -317,7 +317,7 @@ namespace Umbraco.Tests.PublishedContent var ctx = GetUmbracoContext("/test"); var searcher = indexer.GetSearcher(); - var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, new DictionaryAppCache(), ContentTypesCache, Factory.GetInstance(), Factory.GetInstance()); + var cache = new PublishedMediaCache(ServiceContext.MediaService, ServiceContext.UserService, searcher, new DictionaryAppCache(), ContentTypesCache, Factory.GetRequiredService(), Factory.GetRequiredService()); //we are using the media.xml media to test the examine results implementation, see the media.xml file in the ExamineHelpers namespace var publishedMedia = cache.GetById(3113); @@ -485,7 +485,7 @@ namespace Umbraco.Tests.PublishedContent "); var node = xml.DescendantsAndSelf("Image").Single(x => (int)x.Attribute("id") == nodeId); - var publishedMedia = new PublishedMediaCache(new XmlStore((XmlDocument)null, null, null, null, HostingEnvironment), ServiceContext.MediaService, ServiceContext.UserService, new DictionaryAppCache(), ContentTypesCache, Factory.GetInstance(), Factory.GetInstance(), VariationContextAccessor); + var publishedMedia = new PublishedMediaCache(new XmlStore((XmlDocument)null, null, null, null, HostingEnvironment), ServiceContext.MediaService, ServiceContext.UserService, new DictionaryAppCache(), ContentTypesCache, Factory.GetRequiredService(), Factory.GetRequiredService(), VariationContextAccessor); var nav = node.CreateNavigator(); @@ -505,7 +505,7 @@ namespace Umbraco.Tests.PublishedContent var errorXml = new XElement("error", string.Format("No media is maching '{0}'", 1234)); var nav = errorXml.CreateNavigator(); - var publishedMedia = new PublishedMediaCache(new XmlStore((XmlDocument)null, null, null, null, HostingEnvironment), ServiceContext.MediaService, ServiceContext.UserService, new DictionaryAppCache(), ContentTypesCache, Factory.GetInstance(), Factory.GetInstance(), VariationContextAccessor); + var publishedMedia = new PublishedMediaCache(new XmlStore((XmlDocument)null, null, null, null, HostingEnvironment), ServiceContext.MediaService, ServiceContext.UserService, new DictionaryAppCache(), ContentTypesCache, Factory.GetRequiredService(), Factory.GetRequiredService(), VariationContextAccessor); var converted = publishedMedia.ConvertFromXPathNodeIterator(nav.Select("/"), 1234); Assert.IsNull(converted); diff --git a/src/Umbraco.Tests/Routing/BaseUrlProviderTest.cs b/src/Umbraco.Tests/Routing/BaseUrlProviderTest.cs index 9860b5739f..8b05dd2c06 100644 --- a/src/Umbraco.Tests/Routing/BaseUrlProviderTest.cs +++ b/src/Umbraco.Tests/Routing/BaseUrlProviderTest.cs @@ -1,4 +1,5 @@ using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Moq; using Umbraco.Core; using Umbraco.Core.Configuration.Models; @@ -19,7 +20,7 @@ namespace Umbraco.Tests.Routing protected override void Compose() { base.Compose(); - Composition.Register(); + Composition.Services.AddTransient(); } protected override void ComposeSettings() diff --git a/src/Umbraco.Tests/Routing/ContentFinderByIdTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByIdTests.cs index a21b36dcf5..c02626bab4 100644 --- a/src/Umbraco.Tests/Routing/ContentFinderByIdTests.cs +++ b/src/Umbraco.Tests/Routing/ContentFinderByIdTests.cs @@ -20,7 +20,7 @@ namespace Umbraco.Tests.Routing var publishedRouter = CreatePublishedRouter(); var frequest = publishedRouter.CreateRequest(umbracoContext); var webRoutingSettings = new WebRoutingSettings(); - var lookup = new ContentFinderByIdPath(Microsoft.Extensions.Options.Options.Create(webRoutingSettings), LoggerFactory.CreateLogger(), Factory.GetInstance()); + var lookup = new ContentFinderByIdPath(Microsoft.Extensions.Options.Options.Create(webRoutingSettings), LoggerFactory.CreateLogger(), Factory.GetRequiredService()); var result = lookup.TryFindContent(frequest); diff --git a/src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs b/src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs index 73ca7ba03c..edcbf858e2 100644 --- a/src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs +++ b/src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs @@ -1,4 +1,5 @@ -using NUnit.Framework; +using Microsoft.Extensions.DependencyInjection; +using NUnit.Framework; using Microsoft.Extensions.Logging; using Umbraco.Core.Models; using Umbraco.Web.Routing; @@ -14,7 +15,7 @@ namespace Umbraco.Tests.Routing { base.Compose(); - Composition.Register(); + Composition.Services.AddTransient(); } private void SetDomains1() diff --git a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs index d74a8c68fe..e926557856 100644 --- a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs +++ b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs @@ -155,12 +155,12 @@ namespace Umbraco.Tests.Routing var handler = new RenderRouteHandler(umbracoContext, new TestControllerFactory(umbracoContextAccessor, Mock.Of>(), context => { - return new CustomDocumentController(Factory.GetInstance>(), + return new CustomDocumentController(Factory.GetRequiredService>(), umbracoContextAccessor, - Factory.GetInstance(), - Factory.GetInstance(), - Factory.GetInstance(), - Factory.GetInstance()); + Factory.GetRequiredService(), + Factory.GetRequiredService(), + Factory.GetRequiredService(), + Factory.GetRequiredService()); }), ShortStringHelper); handler.GetHandlerForRoute(httpContext.Request.RequestContext, frequest); diff --git a/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs b/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs index 68c002fea3..4165b381ca 100644 --- a/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs +++ b/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; @@ -25,7 +26,7 @@ namespace Umbraco.Tests.Routing base.Compose(); Composition.RegisterUnique(_ => Mock.Of()); - Composition.Register(); + Composition.Services.AddTransient(); } void SetDomains1() diff --git a/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs b/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs index 81fe22a698..4063568d47 100644 --- a/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs +++ b/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Moq; using NUnit.Framework; using Microsoft.Extensions.Logging; @@ -27,7 +28,7 @@ namespace Umbraco.Tests.Routing { base.Compose(); Composition.RegisterUnique(_ => Mock.Of()); - Composition.Register(); + Composition.Services.AddTransient(); } [Test] diff --git a/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs b/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs index ea111a1e29..c624a720e9 100644 --- a/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs +++ b/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using Examine; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; @@ -17,6 +18,7 @@ using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Runtime; +using Umbraco.Infrastructure.Composing; using Umbraco.Net; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Stubs; @@ -43,43 +45,6 @@ namespace Umbraco.Tests.Runtimes TestComponent.Reset(); } - [Test] - public void ComponentLifeCycle() - { - using (var app = new TestUmbracoApplication()) - { - app.HandleApplicationStart(app, new EventArgs()); - - var e = app.Runtime.State.BootFailedException; - var m = ""; - switch (e) - { - case null: - m = ""; - break; - case BootFailedException bfe when bfe.InnerException != null: - m = "BootFailed: " + bfe.InnerException.GetType() + " " + bfe.InnerException.Message + " " + bfe.InnerException.StackTrace; - break; - default: - m = e.GetType() + " " + e.Message + " " + e.StackTrace; - break; - } - - Assert.AreNotEqual(RuntimeLevel.BootFailed, app.Runtime.State.Level, m); - Assert.IsTrue(TestComposer.Ctored); - Assert.IsTrue(TestComposer.Composed); - Assert.IsTrue(TestComponent.Ctored); - Assert.IsNotNull(TestComponent.ProfilingLogger); - Assert.IsInstanceOf(TestComponent.ProfilingLogger); - - // note: components are NOT disposed after boot - - Assert.IsFalse(TestComponent.Terminated); - - app.HandleApplicationEnd(); - Assert.IsTrue(TestComponent.Terminated); - } - } // test application public class TestUmbracoApplication : UmbracoApplicationBase @@ -124,15 +89,15 @@ namespace Umbraco.Tests.Runtimes return mock.Object; } - public override IFactory Configure(IRegister container) + public override void Configure(IServiceCollection services) { + var container = ServiceCollectionRegistryAdapter.Wrap(services); container.Register(Lifetime.Singleton); container.Register(Lifetime.Singleton); container.Register(typeof(ILogger<>), typeof(Logger<>), Lifetime.Singleton); - var factory = base.Configure(container); - return factory; + base.Configure(services); } // runs with only one single component diff --git a/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs b/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs index ebfb9da8b3..e661aa0bfc 100644 --- a/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs +++ b/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs @@ -15,8 +15,10 @@ using Umbraco.Core.Models; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Scoping; using Umbraco.Core.Services; +using Umbraco.Infrastructure.Composing; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Entities; +using Umbraco.Web; using Current = Umbraco.Web.Composing.Current; namespace Umbraco.Tests.Scoping @@ -34,14 +36,14 @@ namespace Umbraco.Tests.Scoping DoThing2 = null; DoThing3 = null; - var register = TestHelper.GetRegister(); + var wrapper = (ServiceCollectionRegistryAdapter) TestHelper.GetRegister(); - var composition = new Composition(register, TestHelper.GetMockedTypeLoader(), Mock.Of(), Mock.Of(), TestHelper.IOHelper, AppCaches.NoCache); + var composition = new Composition(wrapper.Services, TestHelper.GetMockedTypeLoader(), Mock.Of(), Mock.Of(), TestHelper.IOHelper, AppCaches.NoCache); - _testObjects = new TestObjects(register); + _testObjects = new TestObjects(wrapper); var globalSettings = new GlobalSettings(); - composition.RegisterUnique(factory => new FileSystems(factory, factory.TryGetInstance>(), factory.TryGetInstance(), TestHelper.IOHelper, Microsoft.Extensions.Options.Options.Create(globalSettings), TestHelper.GetHostingEnvironment())); + composition.RegisterUnique(factory => new FileSystems(factory, factory.GetService>(), factory.GetService(), TestHelper.IOHelper, Microsoft.Extensions.Options.Options.Create(globalSettings), TestHelper.GetHostingEnvironment())); composition.WithCollectionBuilder(); Current.Reset(); diff --git a/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs b/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs index 68e1c4a2e2..1aa3594a96 100644 --- a/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs +++ b/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs @@ -73,7 +73,7 @@ namespace Umbraco.Tests.Scoping var runtimeStateMock = new Mock(); runtimeStateMock.Setup(x => x.Level).Returns(() => RuntimeLevel.Run); - var contentTypeFactory = Factory.GetInstance(); + var contentTypeFactory = Factory.GetRequiredService(); var documentRepository = Mock.Of(); var mediaRepository = Mock.Of(); var memberRepository = Mock.Of(); @@ -98,7 +98,7 @@ namespace Umbraco.Tests.Scoping DefaultCultureAccessor, new DatabaseDataSource(Mock.Of>()), Microsoft.Extensions.Options.Options.Create(globalSettings ?? new GlobalSettings()), - Factory.GetInstance(), + Factory.GetRequiredService(), new NoopPublishedModelFactory(), new UrlSegmentProviderCollection(new[] { new DefaultUrlSegmentProvider(ShortStringHelper) }), hostingEnvironment, diff --git a/src/Umbraco.Tests/Scoping/ScopedXmlTests.cs b/src/Umbraco.Tests/Scoping/ScopedXmlTests.cs index cac420d5e2..9f2a05fdca 100644 --- a/src/Umbraco.Tests/Scoping/ScopedXmlTests.cs +++ b/src/Umbraco.Tests/Scoping/ScopedXmlTests.cs @@ -79,7 +79,7 @@ namespace Umbraco.Tests.Scoping // xmlStore.Xml - the actual main xml document // publishedContentCache.GetXml() - the captured xml - private static XmlStore XmlStore => (Current.Factory.GetInstance() as XmlPublishedSnapshotService).XmlStore; + private static XmlStore XmlStore => (Current.Factory.GetRequiredService() as XmlPublishedSnapshotService).XmlStore; private static XmlDocument XmlMaster => XmlStore.Xml; private static XmlDocument XmlInContext => ((PublishedContentCache) Umbraco.Web.Composing.Current.UmbracoContext.Content).GetXml(false); diff --git a/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs b/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs index 3c3e14e2c4..02484f2f0a 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs @@ -11,7 +11,9 @@ using Umbraco.Core.Composing; using Umbraco.Core.Logging; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence; +using Umbraco.Infrastructure.Composing; using Umbraco.Persistance.SqlCe; +using Umbraco.Web; using Current = Umbraco.Web.Composing.Current; namespace Umbraco.Tests.TestHelpers @@ -35,7 +37,7 @@ namespace Umbraco.Tests.TestHelpers { Current.Reset(); - var container = TestHelper.GetRegister(); + var wrapper = (ServiceCollectionRegistryAdapter) TestHelper.GetRegister(); var ioHelper = TestHelper.IOHelper; var logger = new ProfilingLogger(Mock.Of(), Mock.Of()); @@ -46,7 +48,7 @@ namespace Umbraco.Tests.TestHelpers logger, false); - var composition = new Composition(container, typeLoader, Mock.Of(), Mock.Of(), TestHelper.IOHelper, AppCaches.NoCache); + var composition = new Composition(wrapper.Services, typeLoader, Mock.Of(), Mock.Of(), TestHelper.IOHelper, AppCaches.NoCache); composition.RegisterUnique(_ => Mock.Of()); composition.RegisterUnique(_ => NullLoggerFactory.Instance); @@ -64,8 +66,8 @@ namespace Umbraco.Tests.TestHelpers var pocoMappers = new NPoco.MapperCollection { new PocoMapper() }; var pocoDataFactory = new FluentPocoDataFactory((type, iPocoDataFactory) => new PocoDataBuilder(type, pocoMappers).Init()); var sqlSyntax = new SqlCeSyntaxProvider(); - SqlContext = new SqlContext(sqlSyntax, DatabaseType.SQLCe, pocoDataFactory, new Lazy(() => factory.GetInstance())); - Mappers = factory.GetInstance(); + SqlContext = new SqlContext(sqlSyntax, DatabaseType.SQLCe, pocoDataFactory, new Lazy(() => factory.GetRequiredService())); + Mappers = factory.GetRequiredService(); SetUp(); } diff --git a/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs b/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs index 51836502fb..4a59229980 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs @@ -110,11 +110,11 @@ namespace Umbraco.Tests.TestHelpers Mock.Of>(), Mock.Of(), Mock.Of(), - container?.GetInstance() ?? Current.Factory.GetInstance(), - container?.GetInstance()?? Current.Factory.GetInstance(), - container?.GetInstance()?? Current.Factory.GetInstance(), - container?.GetInstance() ?? Current.Factory.GetInstance(), - container?.GetInstance() ?? Current.Factory.GetInstance() + container?.GetRequiredService() ?? Current.Factory.GetRequiredService(), + container?.GetRequiredService()?? Current.Factory.GetRequiredService(), + container?.GetRequiredService()?? Current.Factory.GetRequiredService(), + container?.GetRequiredService() ?? Current.Factory.GetRequiredService(), + container?.GetRequiredService() ?? Current.Factory.GetRequiredService() ); } } diff --git a/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs b/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs index d0348cf589..af4114672b 100644 --- a/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs +++ b/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs @@ -61,7 +61,7 @@ namespace Umbraco.Tests.TestHelpers.Stubs foreach (var parameter in allParams) { var found = possibleParams.SingleOrDefault(x => x.GetType() == parameter.ParameterType) - ?? Current.Factory.GetInstance(parameter.ParameterType); + ?? Current.Factory.GetRequiredService(parameter.ParameterType); if (found != null) args.Add(found); } if (args.Count == allParams.Length) diff --git a/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs b/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs index 671af42ef0..70768e89f0 100644 --- a/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs +++ b/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs @@ -85,7 +85,7 @@ namespace Umbraco.Tests.TestHelpers private T MockService(IFactory container = null) where T : class { - return container?.TryGetInstance() ?? new Mock().Object; + return container?.GetService() ?? new Mock().Object; } /// diff --git a/src/Umbraco.Tests/TestHelpers/TestObjects.cs b/src/Umbraco.Tests/TestHelpers/TestObjects.cs index 0b284b8f47..ccca89f096 100644 --- a/src/Umbraco.Tests/TestHelpers/TestObjects.cs +++ b/src/Umbraco.Tests/TestHelpers/TestObjects.cs @@ -71,13 +71,13 @@ namespace Umbraco.Tests.TestHelpers private Lazy GetLazyService(IFactory container, Func ctor) where T : class { - return new Lazy(() => container?.TryGetInstance() ?? ctor(container)); + return new Lazy(() => container?.GetService() ?? ctor(container)); } private T GetRepo(IFactory container) where T : class, IRepository { - return container?.TryGetInstance() ?? Mock.Of(); + return container?.GetService() ?? Mock.Of(); } public IScopeProvider GetScopeProvider(ILoggerFactory loggerFactory, ITypeFinder typeFinder = null, FileSystems fileSystems = null, IUmbracoDatabaseFactory databaseFactory = null) @@ -92,7 +92,7 @@ namespace Umbraco.Tests.TestHelpers // var mappersBuilder = new MapperCollectionBuilder(Current.Container); // FIXME: // mappersBuilder.AddCore(); // var mappers = mappersBuilder.CreateCollection(); - var mappers = Current.Factory.GetInstance(); + var mappers = Current.Factory.GetRequiredService(); databaseFactory = new UmbracoDatabaseFactory( loggerFactory.CreateLogger(), loggerFactory, diff --git a/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs b/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs index 7d565d70b2..d6ff5fcfbb 100644 --- a/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs +++ b/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs @@ -4,6 +4,7 @@ using System.Data.SqlServerCe; using System.Threading; using System.Web.Routing; using System.Xml; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Moq; @@ -59,7 +60,7 @@ namespace Umbraco.Tests.TestHelpers internal ScopeProvider ScopeProvider => Current.ScopeProvider as ScopeProvider; - protected ISqlContext SqlContext => Factory.GetInstance(); + protected ISqlContext SqlContext => Factory.GetRequiredService(); public override void SetUp() { @@ -74,7 +75,7 @@ namespace Umbraco.Tests.TestHelpers { base.Compose(); - Composition.Register(); + Composition.Services.AddTransient(); Composition.Register(factory => PublishedSnapshotService); Composition.Register(factory => DefaultCultureAccessor); @@ -90,8 +91,8 @@ namespace Umbraco.Tests.TestHelpers if (Options.Database == UmbracoTestOptions.Database.None) return TestObjects.GetDatabaseFactoryMock(); - var lazyMappers = new Lazy(f.GetInstance); - var factory = new UmbracoDatabaseFactory(f.GetInstance>(), f.GetInstance(), GetDbConnectionString(), GetDbProviderName(), lazyMappers, TestHelper.DbProviderFactoryCreator); + var lazyMappers = new Lazy(f.GetRequiredService); + var factory = new UmbracoDatabaseFactory(f.GetRequiredService>(), f.GetRequiredService(), GetDbConnectionString(), GetDbProviderName(), lazyMappers, TestHelper.DbProviderFactoryCreator); factory.ResetForTests(); return factory; }); @@ -105,7 +106,7 @@ namespace Umbraco.Tests.TestHelpers public override void TearDown() { - var profilingLogger = Factory.TryGetInstance(); + var profilingLogger = Factory.GetService(); var timer = profilingLogger?.TraceDuration("teardown"); // FIXME: move that one up try { @@ -242,11 +243,11 @@ namespace Umbraco.Tests.TestHelpers var cache = NoAppCache.Instance; ContentTypesCache ??= new PublishedContentTypeCache( - Factory.GetInstance(), - Factory.GetInstance(), - Factory.GetInstance(), - Factory.GetInstance(), - Factory.GetInstance>()); + Factory.GetRequiredService(), + Factory.GetRequiredService(), + Factory.GetRequiredService(), + Factory.GetRequiredService(), + Factory.GetRequiredService>()); // testing=true so XmlStore will not use the file nor the database @@ -254,19 +255,19 @@ namespace Umbraco.Tests.TestHelpers var variationContextAccessor = new TestVariationContextAccessor(); var service = new XmlPublishedSnapshotService( ServiceContext, - Factory.GetInstance(), + Factory.GetRequiredService(), ScopeProvider, cache, publishedSnapshotAccessor, variationContextAccessor, - Factory.GetInstance(), - Factory.GetInstance(), Factory.GetInstance(), Factory.GetInstance(), + Factory.GetRequiredService(), + Factory.GetRequiredService(), Factory.GetRequiredService(), Factory.GetRequiredService(), DefaultCultureAccessor, - Factory.GetInstance(), + Factory.GetRequiredService(), globalSettings ?? TestObjects.GetGlobalSettings(), HostingEnvironment, HostingLifetime, ShortStringHelper, new SiteDomainHelper(), - Factory.GetInstance(), + Factory.GetRequiredService(), ContentTypesCache, null, true, Options.PublishedRepositoryEvents); diff --git a/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs b/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs index 017f7022e7..735811d355 100644 --- a/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs +++ b/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs @@ -3,6 +3,7 @@ using System.Globalization; using System.Linq; using System.Web; using System.Web.Security; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; @@ -66,7 +67,7 @@ namespace Umbraco.Tests.Testing.TestingTests Composition.Register(_ => Mock.Of()); Composition.Register(_ => Mock.Of()); Composition.Register(_ => AppCaches.Disabled); - Composition.Register(); + Composition.Services.AddTransient(); // ReSharper disable once UnusedVariable var helper = new UmbracoHelper(Mock.Of(), diff --git a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs index 347545068c..5e15a58017 100644 --- a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs +++ b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs @@ -9,6 +9,7 @@ using System.Web.Routing; using System.Web.Security; using System.Xml.Linq; using Examine; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Moq; @@ -42,6 +43,7 @@ using Umbraco.Core.Serialization; using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; using Umbraco.Core.Strings; +using Umbraco.Infrastructure.Composing; using Umbraco.Net; using Umbraco.Tests.Common; using Umbraco.Tests.TestHelpers; @@ -119,43 +121,43 @@ namespace Umbraco.Tests.Testing private TypeLoader _featureTypeLoader; #region Accessors - protected ServiceContext ServiceContext => Factory.GetInstance(); + protected ServiceContext ServiceContext => Factory.GetRequiredService(); - protected ILoggerFactory LoggerFactory => Factory.GetInstance(); + protected ILoggerFactory LoggerFactory => Factory.GetRequiredService(); protected IJsonSerializer JsonNetSerializer { get; } = new JsonNetSerializer(); protected IIOHelper IOHelper { get; private set; } protected UriUtility UriUtility => new UriUtility(HostingEnvironment); - protected IPublishedUrlProvider PublishedUrlProvider => Factory.GetInstance(); - protected IDataTypeService DataTypeService => Factory.GetInstance(); - protected IPasswordHasher PasswordHasher => Factory.GetInstance(); - protected Lazy PropertyEditorCollection => new Lazy(() => Factory.GetInstance()); - protected ILocalizationService LocalizationService => Factory.GetInstance(); + protected IPublishedUrlProvider PublishedUrlProvider => Factory.GetRequiredService(); + protected IDataTypeService DataTypeService => Factory.GetRequiredService(); + protected IPasswordHasher PasswordHasher => Factory.GetRequiredService(); + protected Lazy PropertyEditorCollection => new Lazy(() => Factory.GetRequiredService()); + protected ILocalizationService LocalizationService => Factory.GetRequiredService(); protected ILocalizedTextService LocalizedTextService { get; private set; } - protected IShortStringHelper ShortStringHelper => Factory?.GetInstance() ?? TestHelper.ShortStringHelper; - protected IImageUrlGenerator ImageUrlGenerator => Factory.GetInstance(); - protected UploadAutoFillProperties UploadAutoFillProperties => Factory.GetInstance(); + protected IShortStringHelper ShortStringHelper => Factory?.GetRequiredService() ?? TestHelper.ShortStringHelper; + protected IImageUrlGenerator ImageUrlGenerator => Factory.GetRequiredService(); + protected UploadAutoFillProperties UploadAutoFillProperties => Factory.GetRequiredService(); protected IUmbracoVersion UmbracoVersion { get; private set; } protected ITypeFinder TypeFinder { get; private set; } - protected IProfiler Profiler => Factory.GetInstance(); + protected IProfiler Profiler => Factory.GetRequiredService(); - protected virtual IProfilingLogger ProfilingLogger => Factory.GetInstance(); + protected virtual IProfilingLogger ProfilingLogger => Factory.GetRequiredService(); protected IHostingEnvironment HostingEnvironment { get; } = new AspNetHostingEnvironment(Microsoft.Extensions.Options.Options.Create(new HostingSettings())); protected IApplicationShutdownRegistry HostingLifetime { get; } = new AspNetApplicationShutdownRegistry(); - protected IIpResolver IpResolver => Factory.GetInstance(); - protected IBackOfficeInfo BackOfficeInfo => Factory.GetInstance(); - protected AppCaches AppCaches => Factory.GetInstance(); + protected IIpResolver IpResolver => Factory.GetRequiredService(); + protected IBackOfficeInfo BackOfficeInfo => Factory.GetRequiredService(); + protected AppCaches AppCaches => Factory.GetRequiredService(); - protected virtual ISqlSyntaxProvider SqlSyntax => Factory.GetInstance(); + protected virtual ISqlSyntaxProvider SqlSyntax => Factory.GetRequiredService(); - protected IMapperCollection Mappers => Factory.GetInstance(); + protected IMapperCollection Mappers => Factory.GetRequiredService(); - protected UmbracoMapper Mapper => Factory.GetInstance(); - protected IHttpContextAccessor HttpContextAccessor => Factory.GetInstance(); + protected UmbracoMapper Mapper => Factory.GetRequiredService(); + protected IHttpContextAccessor HttpContextAccessor => Factory.GetRequiredService(); protected IRuntimeState RuntimeState => MockRuntimeState(RuntimeLevel.Run); private ILoggerFactory _loggerFactory; @@ -204,11 +206,16 @@ namespace Umbraco.Tests.Testing var register = TestHelper.GetRegister(); - - Composition = new Composition(register, typeLoader, proflogger, MockRuntimeState(RuntimeLevel.Run), TestHelper.IOHelper, AppCaches.NoCache); + Composition = new Composition( + (register as ServiceCollectionRegistryAdapter).Services, + typeLoader, + proflogger, + MockRuntimeState(RuntimeLevel.Run), + TestHelper.IOHelper, + AppCaches.NoCache + ); //TestHelper.GetConfigs().RegisterWith(register); - Composition.RegisterUnique(typeof(ILoggerFactory), loggerFactory); Composition.Register(typeof(ILogger<>), typeof(Logger<>)); Composition.Register(typeof(ILogger), msLogger); @@ -316,7 +323,7 @@ namespace Umbraco.Tests.Testing Composition.RegisterUnique(); Composition.RegisterUnique(); Composition.SetCultureDictionaryFactory(); - Composition.Register(f => f.GetInstance().CreateDictionary(), Lifetime.Singleton); + Composition.Register(f => f.GetRequiredService().CreateDictionary(), Lifetime.Singleton); // register back office sections in the order we want them rendered Composition.WithCollectionBuilder().Append() .Append() @@ -339,11 +346,11 @@ namespace Umbraco.Tests.Testing var webRoutingSettings = new WebRoutingSettings(); Composition.RegisterUnique(factory => new UrlProvider( - factory.GetInstance(), + factory.GetRequiredService(), Microsoft.Extensions.Options.Options.Create(webRoutingSettings), new UrlProviderCollection(Enumerable.Empty()), new MediaUrlProviderCollection(Enumerable.Empty()), - factory.GetInstance())); + factory.GetRequiredService())); @@ -356,7 +363,7 @@ namespace Umbraco.Tests.Testing runtimeStateMock.Setup(x => x.Level).Returns(RuntimeLevel.Run); Composition.RegisterUnique(f => runtimeStateMock.Object); Composition.Register(_ => Mock.Of()); - Composition.Register(); + Composition.Services.AddTransient(); // ah... Composition.WithCollectionBuilder(); @@ -485,16 +492,16 @@ namespace Umbraco.Tests.Testing LoggerFactory, globalSettings, connectionStrings, - new Lazy(f.GetInstance), + new Lazy(f.GetRequiredService), TestHelper.DbProviderFactoryCreator)); - Composition.RegisterUnique(f => f.TryGetInstance().SqlContext); + Composition.RegisterUnique(f => f.GetService().SqlContext); Composition.WithCollectionBuilder(); // empty Composition.RegisterUnique(factory - => TestObjects.GetScopeProvider(_loggerFactory, factory.TryGetInstance(), factory.TryGetInstance(), factory.TryGetInstance())); - Composition.RegisterUnique(factory => (IScopeAccessor) factory.GetInstance()); + => TestObjects.GetScopeProvider(_loggerFactory, factory.GetService(), factory.GetService(), factory.GetService())); + Composition.RegisterUnique(factory => (IScopeAccessor) factory.GetRequiredService()); Composition.ComposeServices(); @@ -560,7 +567,7 @@ namespace Umbraco.Tests.Testing // reset and dispose scopes // ensures we don't leak an opened database connection // which would lock eg SqlCe .sdf files - if (Factory?.TryGetInstance() is ScopeProvider scopeProvider) + if (Factory?.GetService() is ScopeProvider scopeProvider) { Scope scope; while ((scope = scopeProvider.AmbientScope) != null) diff --git a/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs b/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs index 2e3419720a..7b04e38e45 100644 --- a/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs +++ b/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs @@ -30,7 +30,7 @@ namespace Umbraco.Tests.UmbracoExamine [Test] public void Index_Property_Data_With_Value_Indexer() { - var contentValueSetBuilder = IndexInitializer.GetContentValueSetBuilder(Factory.GetInstance(), ScopeProvider, false); + var contentValueSetBuilder = IndexInitializer.GetContentValueSetBuilder(Factory.GetRequiredService(), ScopeProvider, false); using (var luceneDir = new RandomIdRamDirectory()) using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, HostingEnvironment, RuntimeState, luceneDir, @@ -122,8 +122,8 @@ namespace Umbraco.Tests.UmbracoExamine [Test] public void Rebuild_Index() { - var contentRebuilder = IndexInitializer.GetContentIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockContentService(), ScopeProvider, false); - var mediaRebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockMediaService()); + var contentRebuilder = IndexInitializer.GetContentIndexRebuilder(Factory.GetRequiredService(), IndexInitializer.GetMockContentService(), ScopeProvider, false); + var mediaRebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetRequiredService(), IndexInitializer.GetMockMediaService()); using (var luceneDir = new RandomIdRamDirectory()) using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, HostingEnvironment, RuntimeState, luceneDir, @@ -150,7 +150,7 @@ namespace Umbraco.Tests.UmbracoExamine [Test] public void Index_Protected_Content_Not_Indexed() { - var rebuilder = IndexInitializer.GetContentIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockContentService(), ScopeProvider, false); + var rebuilder = IndexInitializer.GetContentIndexRebuilder(Factory.GetRequiredService(), IndexInitializer.GetMockContentService(), ScopeProvider, false); using (var luceneDir = new RandomIdRamDirectory()) @@ -275,7 +275,7 @@ namespace Umbraco.Tests.UmbracoExamine [Test] public void Index_Reindex_Content() { - var rebuilder = IndexInitializer.GetContentIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockContentService(), ScopeProvider, false); + var rebuilder = IndexInitializer.GetContentIndexRebuilder(Factory.GetRequiredService(), IndexInitializer.GetMockContentService(), ScopeProvider, false); using (var luceneDir = new RandomIdRamDirectory()) using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, HostingEnvironment, RuntimeState, luceneDir, validator: new ContentValueSetValidator(false))) @@ -316,7 +316,7 @@ namespace Umbraco.Tests.UmbracoExamine public void Index_Delete_Index_Item_Ensure_Heirarchy_Removed() { - var rebuilder = IndexInitializer.GetContentIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockContentService(), ScopeProvider, false); + var rebuilder = IndexInitializer.GetContentIndexRebuilder(Factory.GetRequiredService(), IndexInitializer.GetMockContentService(), ScopeProvider, false); using (var luceneDir = new RandomIdRamDirectory()) using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, HostingEnvironment, RuntimeState, luceneDir)) diff --git a/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs b/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs index d30aec874e..6186e5f782 100644 --- a/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs +++ b/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs @@ -54,7 +54,7 @@ namespace Umbraco.Tests.UmbracoExamine == allRecs); - var propertyEditors = Factory.GetInstance(); + var propertyEditors = Factory.GetRequiredService(); var rebuilder = IndexInitializer.GetContentIndexRebuilder(propertyEditors, contentService, ScopeProvider, true); using (var luceneDir = new RandomIdRamDirectory()) diff --git a/src/Umbraco.Tests/Web/UmbracoHelperTests.cs b/src/Umbraco.Tests/Web/UmbracoHelperTests.cs index 34beee7499..66c9395c59 100644 --- a/src/Umbraco.Tests/Web/UmbracoHelperTests.cs +++ b/src/Umbraco.Tests/Web/UmbracoHelperTests.cs @@ -33,7 +33,7 @@ namespace Umbraco.Tests.Web var typeFinder = TestHelper.GetTypeFinder(); var ioHelper = TestHelper.IOHelper; container - .Setup(x => x.GetInstance(typeof(TypeLoader))) + .Setup(x => x.GetRequiredService(typeof(TypeLoader))) .Returns(new TypeLoader( typeFinder, NoAppCache.Instance, diff --git a/src/Umbraco.Web.BackOffice/Extensions/WebMappingProfiles.cs b/src/Umbraco.Web.BackOffice/Extensions/WebMappingProfiles.cs index 71d3481edf..bc72b1dd44 100644 --- a/src/Umbraco.Web.BackOffice/Extensions/WebMappingProfiles.cs +++ b/src/Umbraco.Web.BackOffice/Extensions/WebMappingProfiles.cs @@ -1,4 +1,5 @@ -using Umbraco.Core; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Core; using Umbraco.Core.BackOffice; using Umbraco.Core.Composing; using Umbraco.Core.Mapping; @@ -15,7 +16,7 @@ namespace Umbraco.Extensions .Add() .Add(); - composition.Register(); + composition.Services.AddTransient(); return composition; } diff --git a/src/Umbraco.Web.BackOffice/Runtime/BackOfficeComposer.cs b/src/Umbraco.Web.BackOffice/Runtime/BackOfficeComposer.cs index ca854b6f65..d15d419089 100644 --- a/src/Umbraco.Web.BackOffice/Runtime/BackOfficeComposer.cs +++ b/src/Umbraco.Web.BackOffice/Runtime/BackOfficeComposer.cs @@ -1,4 +1,5 @@ using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Composing; @@ -26,8 +27,8 @@ namespace Umbraco.Web.BackOffice.Runtime composition.RegisterUnique(); composition.RegisterUnique(); composition.RegisterUnique(); - composition.Register(Lifetime.Request); - composition.Register(Lifetime.Request); + composition.Services.AddScoped(); + composition.Services.AddScoped(); composition.RegisterUnique(); composition.RegisterUnique(); @@ -43,9 +44,9 @@ namespace Umbraco.Web.BackOffice.Runtime composition.RegisterUnique(factory => new PhysicalFileSystem( - factory.GetInstance(), - factory.GetInstance(), - factory.GetInstance>(), + factory.GetRequiredService(), + factory.GetRequiredService(), + factory.GetRequiredService>(), "~/")); composition.RegisterUnique(); diff --git a/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs b/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs index 2725e1b7a6..3a251fff9e 100644 --- a/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs @@ -28,7 +28,7 @@ namespace Umbraco.Web.Common.Builder => builder.AddWith(nameof(WithConfiguration), () => builder.Services.AddUmbracoConfiguration(builder.Config)); public static IUmbracoBuilder WithCore(this IUmbracoBuilder builder) - => builder.AddWith(nameof(WithCore), () => builder.Services.AddUmbracoCore(builder.WebHostEnvironment, builder.Config, out _)); + => builder.AddWith(nameof(WithCore), () => builder.Services.AddUmbracoCore(builder.WebHostEnvironment, builder.Config)); public static IUmbracoBuilder WithMiniProfiler(this IUmbracoBuilder builder) => builder.AddWith(nameof(WithMiniProfiler), () => diff --git a/src/Umbraco.Web.Common/Extensions/ApplicationBuilderExtensions.cs b/src/Umbraco.Web.Common/Extensions/ApplicationBuilderExtensions.cs index ed0d350dc8..9688e5794a 100644 --- a/src/Umbraco.Web.Common/Extensions/ApplicationBuilderExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/ApplicationBuilderExtensions.cs @@ -42,10 +42,6 @@ namespace Umbraco.Extensions if (!app.UmbracoCanBoot()) return app; var runtime = app.ApplicationServices.GetRequiredService(); - if (runtime is CoreRuntime coreRuntime) - { - coreRuntime.ReplaceFactory(app.ApplicationServices); - } // Register a listener for application shutdown in order to terminate the runtime var hostLifetime = app.ApplicationServices.GetRequiredService(); @@ -57,7 +53,7 @@ namespace Umbraco.Extensions LogContext.Push(threadAbortEnricher); // NOTE: We are not in a using clause because we are not removing it, it is on the global context // Start the runtime! - runtime.Start(); + runtime.Start(app.ApplicationServices); return app; } diff --git a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs index ebe792a8a1..e870bb177a 100644 --- a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs @@ -116,9 +116,8 @@ namespace Umbraco.Extensions Assembly entryAssembly, AppCaches appCaches, ILoggingConfiguration loggingConfiguration, - IConfiguration configuration, - out IFactory factory) - => services.AddUmbracoCore(webHostEnvironment, umbContainer, entryAssembly, appCaches, loggingConfiguration, configuration, GetCoreRuntime, out factory); + IConfiguration configuration) + => services.AddUmbracoCore(webHostEnvironment, umbContainer, entryAssembly, appCaches, loggingConfiguration, configuration, GetCoreRuntime); /// /// Adds the Umbraco Configuration requirements @@ -160,18 +159,6 @@ namespace Umbraco.Extensions return services; } - /// - /// Adds the Umbraco Back Core requirements - /// - /// - /// - /// - /// - public static IServiceCollection AddUmbracoCore(this IServiceCollection services, IWebHostEnvironment webHostEnvironment, IConfiguration configuration) - { - return services.AddUmbracoCore(webHostEnvironment, configuration, out _); - } - /// /// Adds the Umbraco Back Core requirements /// @@ -180,7 +167,7 @@ namespace Umbraco.Extensions /// /// /// - public static IServiceCollection AddUmbracoCore(this IServiceCollection services, IWebHostEnvironment webHostEnvironment, IConfiguration configuration, out IFactory factory) + public static IServiceCollection AddUmbracoCore(this IServiceCollection services, IWebHostEnvironment webHostEnvironment, IConfiguration configuration) { var loggingConfig = new LoggingConfiguration( @@ -209,8 +196,7 @@ namespace Umbraco.Extensions appCaches, loggingConfig, configuration, - GetCoreRuntime, - out factory); + GetCoreRuntime); return services; } @@ -237,8 +223,7 @@ namespace Umbraco.Extensions ILoggingConfiguration loggingConfiguration, IConfiguration configuration, //TODO: Yep that's extremely ugly - Func getRuntime, - out IFactory factory) + Func getRuntime) { if (services is null) throw new ArgumentNullException(nameof(services)); var container = umbContainer; @@ -306,7 +291,7 @@ namespace Umbraco.Extensions appCaches, dbProviderFactoryCreator); - factory = coreRuntime.Configure(container); + coreRuntime.Configure(services); return services; } diff --git a/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs b/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs index 8f890c4259..cb247cff60 100644 --- a/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs +++ b/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs @@ -1,5 +1,6 @@ using System.Linq; using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Umbraco.Core; using Umbraco.Core.Composing; @@ -60,7 +61,7 @@ namespace Umbraco.Web.Common.Runtime composition.RegisterUnique(); - composition.Register(); + composition.Services.AddTransient(); composition.RegisterUnique(); composition.RegisterMultipleUnique(); diff --git a/src/Umbraco.Web.Common/RuntimeMinification/SmidgeComposer.cs b/src/Umbraco.Web.Common/RuntimeMinification/SmidgeComposer.cs index 0cb7bc71d2..3ceba06c62 100644 --- a/src/Umbraco.Web.Common/RuntimeMinification/SmidgeComposer.cs +++ b/src/Umbraco.Web.Common/RuntimeMinification/SmidgeComposer.cs @@ -1,4 +1,5 @@ -using Smidge.FileProcessors; +using Microsoft.Extensions.DependencyInjection; +using Smidge.FileProcessors; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Runtime; @@ -17,7 +18,7 @@ namespace Umbraco.Web.Common.RuntimeMinification composition.RegisterUnique(); composition.RegisterUnique(); - composition.Register(); + composition.Services.AddTransient(); } } } diff --git a/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/Rte.cshtml b/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/Rte.cshtml index b8c95400b2..0aef9d10ca 100644 --- a/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/Rte.cshtml +++ b/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/Rte.cshtml @@ -2,9 +2,9 @@ @using Umbraco.Web.Composing @using Umbraco.Web.Templates @{ - var htmlLocalLinkParser = Current.Factory.GetInstance(); - var htmlUrlParser = Current.Factory.GetInstance(); - var htmlImageSourceParser = Current.Factory.GetInstance(); + var htmlLocalLinkParser = Current.Factory.GetRequiredService(); + var htmlUrlParser = Current.Factory.GetRequiredService(); + var htmlImageSourceParser = Current.Factory.GetRequiredService(); var value = htmlUrlParser.EnsureUrls(Model.value.ToString()); value = htmlImageSourceParser.EnsureImageSources(value); diff --git a/src/Umbraco.Web/Composing/Current.cs b/src/Umbraco.Web/Composing/Current.cs index 5a190a90a5..0fd7a02444 100644 --- a/src/Umbraco.Web/Composing/Current.cs +++ b/src/Umbraco.Web/Composing/Current.cs @@ -106,7 +106,7 @@ namespace Umbraco.Web.Composing get { if (_umbracoContextAccessor != null) return _umbracoContextAccessor; - return _umbracoContextAccessor = Factory.GetInstance(); + return _umbracoContextAccessor = Factory.GetRequiredService(); } set => _umbracoContextAccessor = value; // for tests } @@ -119,65 +119,65 @@ namespace Umbraco.Web.Composing => UmbracoContextAccessor.UmbracoContext; public static UmbracoHelper UmbracoHelper - => Factory.GetInstance(); + => Factory.GetRequiredService(); public static IUmbracoComponentRenderer UmbracoComponentRenderer - => Factory.GetInstance(); + => Factory.GetRequiredService(); public static ITagQuery TagQuery - => Factory.GetInstance(); + => Factory.GetRequiredService(); public static IRuntimeMinifier RuntimeMinifier - => Factory.GetInstance(); + => Factory.GetRequiredService(); public static DistributedCache DistributedCache - => Factory.GetInstance(); + => Factory.GetRequiredService(); public static IPublishedSnapshot PublishedSnapshot - => Factory.GetInstance().PublishedSnapshot; + => Factory.GetRequiredService().PublishedSnapshot; public static EventMessages EventMessages - => Factory.GetInstance().GetOrDefault(); + => Factory.GetRequiredService().GetOrDefault(); public static UrlProviderCollection UrlProviders - => Factory.GetInstance(); + => Factory.GetRequiredService(); public static MediaUrlProviderCollection MediaUrlProviders - => Factory.GetInstance(); + => Factory.GetRequiredService(); public static HealthCheckCollectionBuilder HealthCheckCollectionBuilder - => Factory.GetInstance(); + => Factory.GetRequiredService(); internal static ActionCollectionBuilder ActionCollectionBuilder - => Factory.GetInstance(); + => Factory.GetRequiredService(); public static ActionCollection Actions - => Factory.GetInstance(); + => Factory.GetRequiredService(); public static ContentFinderCollection ContentFinders - => Factory.GetInstance(); + => Factory.GetRequiredService(); public static IContentLastChanceFinder LastChanceContentFinder - => Factory.GetInstance(); + => Factory.GetRequiredService(); internal static EditorValidatorCollection EditorValidators - => Factory.GetInstance(); + => Factory.GetRequiredService(); internal static UmbracoApiControllerTypeCollection UmbracoApiControllerTypes - => Factory.GetInstance(); + => Factory.GetRequiredService(); internal static SurfaceControllerTypeCollection SurfaceControllerTypes - => Factory.GetInstance(); + => Factory.GetRequiredService(); internal static IPublishedSnapshotService PublishedSnapshotService - => Factory.GetInstance(); + => Factory.GetRequiredService(); public static ITreeService TreeService - => Factory.GetInstance(); + => Factory.GetRequiredService(); public static ISectionService SectionService - => Factory.GetInstance(); + => Factory.GetRequiredService(); public static IIconService IconService - => Factory.GetInstance(); + => Factory.GetRequiredService(); #endregion @@ -207,49 +207,49 @@ namespace Umbraco.Web.Composing // proxy Core for convenience - public static IMediaFileSystem MediaFileSystem => Factory.GetInstance(); + public static IMediaFileSystem MediaFileSystem => Factory.GetRequiredService(); - public static UmbracoMapper Mapper => Factory.GetInstance(); + public static UmbracoMapper Mapper => Factory.GetRequiredService(); - public static IRuntimeState RuntimeState => Factory.GetInstance(); + public static IRuntimeState RuntimeState => Factory.GetRequiredService(); - public static CacheRefresherCollection CacheRefreshers => Factory.GetInstance(); + public static CacheRefresherCollection CacheRefreshers => Factory.GetRequiredService(); - internal static IPublishedModelFactory PublishedModelFactory => Factory.GetInstance(); + internal static IPublishedModelFactory PublishedModelFactory => Factory.GetRequiredService(); - public static IServerMessenger ServerMessenger => Factory.GetInstance(); + public static IServerMessenger ServerMessenger => Factory.GetRequiredService(); - public static ILogger Logger => Factory.GetInstance>(); + public static ILogger Logger => Factory.GetRequiredService>(); - public static ILoggerFactory LoggerFactory => Factory.GetInstance(); + public static ILoggerFactory LoggerFactory => Factory.GetRequiredService(); - public static IProfiler Profiler => Factory.GetInstance(); + public static IProfiler Profiler => Factory.GetRequiredService(); - public static IProfilerHtml ProfilerHtml => Factory.GetInstance(); + public static IProfilerHtml ProfilerHtml => Factory.GetRequiredService(); - public static IProfilingLogger ProfilingLogger => Factory.GetInstance(); + public static IProfilingLogger ProfilingLogger => Factory.GetRequiredService(); - public static AppCaches AppCaches => Factory.GetInstance(); + public static AppCaches AppCaches => Factory.GetRequiredService(); - public static ServiceContext Services => Factory.GetInstance(); + public static ServiceContext Services => Factory.GetRequiredService(); - public static IScopeProvider ScopeProvider => Factory.GetInstance(); + public static IScopeProvider ScopeProvider => Factory.GetRequiredService(); - public static IPublishedContentTypeFactory PublishedContentTypeFactory => Factory.GetInstance(); + public static IPublishedContentTypeFactory PublishedContentTypeFactory => Factory.GetRequiredService(); - public static IPublishedValueFallback PublishedValueFallback => Factory.GetInstance(); + public static IPublishedValueFallback PublishedValueFallback => Factory.GetRequiredService(); - public static IVariationContextAccessor VariationContextAccessor => Factory.GetInstance(); + public static IVariationContextAccessor VariationContextAccessor => Factory.GetRequiredService(); - public static IIOHelper IOHelper => Factory.GetInstance(); - public static IHostingEnvironment HostingEnvironment => Factory.GetInstance(); - public static IIpResolver IpResolver => Factory.GetInstance(); - public static IUmbracoVersion UmbracoVersion => Factory.GetInstance(); - public static IPublishedUrlProvider PublishedUrlProvider => Factory.GetInstance(); - public static IMenuItemCollectionFactory MenuItemCollectionFactory => Factory.GetInstance(); - public static MembershipHelper MembershipHelper => Factory.GetInstance(); - public static IUmbracoApplicationLifetime UmbracoApplicationLifetime => Factory.GetInstance(); - public static IPublishedContentQuery PublishedContentQuery => Factory.GetInstance(); + public static IIOHelper IOHelper => Factory.GetRequiredService(); + public static IHostingEnvironment HostingEnvironment => Factory.GetRequiredService(); + public static IIpResolver IpResolver => Factory.GetRequiredService(); + public static IUmbracoVersion UmbracoVersion => Factory.GetRequiredService(); + public static IPublishedUrlProvider PublishedUrlProvider => Factory.GetRequiredService(); + public static IMenuItemCollectionFactory MenuItemCollectionFactory => Factory.GetRequiredService(); + public static MembershipHelper MembershipHelper => Factory.GetRequiredService(); + public static IUmbracoApplicationLifetime UmbracoApplicationLifetime => Factory.GetRequiredService(); + public static IPublishedContentQuery PublishedContentQuery => Factory.GetRequiredService(); #endregion } diff --git a/src/Umbraco.Web/Composing/ModuleInjector.cs b/src/Umbraco.Web/Composing/ModuleInjector.cs index 57ef766dea..e21b585ab7 100644 --- a/src/Umbraco.Web/Composing/ModuleInjector.cs +++ b/src/Umbraco.Web/Composing/ModuleInjector.cs @@ -20,7 +20,7 @@ namespace Umbraco.Web.Composing try { // using the service locator here - no other way, really - Module = Current.Factory.GetInstance(); + Module = Current.Factory.GetRequiredService(); } catch { @@ -30,7 +30,7 @@ namespace Umbraco.Web.Composing try { - runtimeState = Current.Factory.GetInstance(); + runtimeState = Current.Factory.GetRequiredService(); } catch { /* don't make it worse */ } diff --git a/src/Umbraco.Web/CompositionExtensions.cs b/src/Umbraco.Web/CompositionExtensions.cs index 906c8fb60d..add809c79f 100644 --- a/src/Umbraco.Web/CompositionExtensions.cs +++ b/src/Umbraco.Web/CompositionExtensions.cs @@ -1,6 +1,8 @@ using System; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core; using Umbraco.Core.Composing; +using Umbraco.Infrastructure.Composing; using Umbraco.Web.Actions; using Umbraco.Web.ContentApps; using Umbraco.Web.Dashboards; @@ -28,7 +30,11 @@ namespace Umbraco.Web /// public static class WebCompositionExtensions { - + public static IFactory CreateFactory(this Composition composition) + { + composition.RegisterBuilders(); + return ServiceProviderFactoryAdapter.Wrap(composition.Services.BuildServiceProvider()); + } #region Uniques @@ -94,31 +100,6 @@ namespace Umbraco.Web composition.RegisterUnique(_ => helper); } - /// - /// Sets the default controller for rendering template views. - /// - /// The type of the controller. - /// The composition. - /// The controller type is registered to the container by the composition. - public static void SetDefaultRenderMvcController(this Composition composition) - => composition.SetDefaultRenderMvcController(typeof(TController)); - - /// - /// Sets the default controller for rendering template views. - /// - /// The composition. - /// The type of the controller. - /// The controller type is registered to the container by the composition. - public static void SetDefaultRenderMvcController(this Composition composition, Type controllerType) - { - composition.OnCreatingFactory["Umbraco.Core.DefaultRenderMvcController"] = () => - { - // no need to register: all IRenderMvcController are registered - //composition.Register(controllerType, Lifetime.Request); - Current.DefaultRenderMvcControllerType = controllerType; - }; - } - #endregion } } diff --git a/src/Umbraco.Web/Mvc/EnsurePublishedContentRequestAttribute.cs b/src/Umbraco.Web/Mvc/EnsurePublishedContentRequestAttribute.cs index feeec0a1ba..e9d39849eb 100644 --- a/src/Umbraco.Web/Mvc/EnsurePublishedContentRequestAttribute.cs +++ b/src/Umbraco.Web/Mvc/EnsurePublishedContentRequestAttribute.cs @@ -72,9 +72,9 @@ namespace Umbraco.Web.Mvc protected IUmbracoContext UmbracoContext => _umbracoContextAccessor?.UmbracoContext ?? Current.UmbracoContext; // TODO: try lazy property injection? - private IPublishedRouter PublishedRouter => Current.Factory.GetInstance(); + private IPublishedRouter PublishedRouter => Current.Factory.GetRequiredService(); - private IPublishedContentQuery PublishedContentQuery => _publishedContentQuery ?? (_publishedContentQuery = Current.Factory.GetInstance()); + private IPublishedContentQuery PublishedContentQuery => _publishedContentQuery ?? (_publishedContentQuery = Current.Factory.GetRequiredService()); public override void OnActionExecuted(ActionExecutedContext filterContext) { diff --git a/src/Umbraco.Web/Mvc/PluginController.cs b/src/Umbraco.Web/Mvc/PluginController.cs index 09ed97171e..4490c8dda5 100644 --- a/src/Umbraco.Web/Mvc/PluginController.cs +++ b/src/Umbraco.Web/Mvc/PluginController.cs @@ -66,11 +66,11 @@ namespace Umbraco.Web.Mvc protected PluginController() : this( - Current.Factory.GetInstance(), - Current.Factory.GetInstance(), - Current.Factory.GetInstance(), - Current.Factory.GetInstance(), - Current.Factory.GetInstance() + Current.Factory.GetRequiredService(), + Current.Factory.GetRequiredService(), + Current.Factory.GetRequiredService(), + Current.Factory.GetRequiredService(), + Current.Factory.GetRequiredService() ) { } diff --git a/src/Umbraco.Web/Mvc/RenderRouteHandler.cs b/src/Umbraco.Web/Mvc/RenderRouteHandler.cs index af896ae243..7ba870553b 100644 --- a/src/Umbraco.Web/Mvc/RenderRouteHandler.cs +++ b/src/Umbraco.Web/Mvc/RenderRouteHandler.cs @@ -47,7 +47,7 @@ namespace Umbraco.Web.Mvc private IUmbracoContext UmbracoContext => _umbracoContext ?? _umbracoContextAccessor.UmbracoContext; - private UmbracoFeatures Features => Current.Factory.GetInstance(); // TODO: inject + private UmbracoFeatures Features => Current.Factory.GetRequiredService(); // TODO: inject #region IRouteHandler Members diff --git a/src/Umbraco.Web/Mvc/UmbracoViewPageOfTModel.cs b/src/Umbraco.Web/Mvc/UmbracoViewPageOfTModel.cs index 7eff581bab..43c3102a62 100644 --- a/src/Umbraco.Web/Mvc/UmbracoViewPageOfTModel.cs +++ b/src/Umbraco.Web/Mvc/UmbracoViewPageOfTModel.cs @@ -105,10 +105,10 @@ namespace Umbraco.Web.Mvc protected UmbracoViewPage() : this( - Current.Factory.GetInstance(), - Current.Factory.GetInstance(), - Current.Factory.GetInstance>(), - Current.Factory.GetInstance>() + Current.Factory.GetRequiredService(), + Current.Factory.GetRequiredService(), + Current.Factory.GetRequiredService>(), + Current.Factory.GetRequiredService>() ) { } diff --git a/src/Umbraco.Web/Mvc/UmbracoVirtualNodeRouteHandler.cs b/src/Umbraco.Web/Mvc/UmbracoVirtualNodeRouteHandler.cs index 56549073f4..38d89aef59 100644 --- a/src/Umbraco.Web/Mvc/UmbracoVirtualNodeRouteHandler.cs +++ b/src/Umbraco.Web/Mvc/UmbracoVirtualNodeRouteHandler.cs @@ -12,7 +12,7 @@ namespace Umbraco.Web.Mvc public abstract class UmbracoVirtualNodeRouteHandler : IRouteHandler { // TODO: try lazy property injection? - private IPublishedRouter PublishedRouter => Current.Factory.GetInstance(); + private IPublishedRouter PublishedRouter => Current.Factory.GetRequiredService(); /// /// Returns the UmbracoContext for this route handler diff --git a/src/Umbraco.Web/PublishedContentExtensions.cs b/src/Umbraco.Web/PublishedContentExtensions.cs index 487212840b..5891f3abb4 100644 --- a/src/Umbraco.Web/PublishedContentExtensions.cs +++ b/src/Umbraco.Web/PublishedContentExtensions.cs @@ -27,9 +27,9 @@ namespace Umbraco.Web private static IPublishedValueFallback PublishedValueFallback => Current.PublishedValueFallback; private static IPublishedSnapshot PublishedSnapshot => Current.PublishedSnapshot; private static IUmbracoContext UmbracoContext => Current.UmbracoContext; - private static ISiteDomainHelper SiteDomainHelper => Current.Factory.GetInstance(); + private static ISiteDomainHelper SiteDomainHelper => Current.Factory.GetRequiredService(); private static IVariationContextAccessor VariationContextAccessor => Current.VariationContextAccessor; - private static IExamineManager ExamineManager => Current.Factory.GetInstance(); + private static IExamineManager ExamineManager => Current.Factory.GetRequiredService(); private static IUserService UserService => Current.Services.UserService; diff --git a/src/Umbraco.Web/Runtime/WebInitialComposer.cs b/src/Umbraco.Web/Runtime/WebInitialComposer.cs index 8d3b416012..3cfe3f409a 100644 --- a/src/Umbraco.Web/Runtime/WebInitialComposer.cs +++ b/src/Umbraco.Web/Runtime/WebInitialComposer.cs @@ -1,6 +1,7 @@ using System.Web.Mvc; using System.Web.Security; using Microsoft.AspNet.SignalR; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Dictionary; @@ -26,14 +27,14 @@ namespace Umbraco.Web.Runtime { base.Compose(composition); - composition.Register(); + composition.Services.AddTransient(); // register membership stuff composition.Register(factory => MembershipProviderExtensions.GetMembersMembershipProvider()); - composition.Register(factory => Roles.Enabled ? Roles.Provider : new MembersRoleProvider(factory.GetInstance())); - composition.Register(Lifetime.Request); - composition.Register(factory => factory.GetInstance().PublishedSnapshot.Members); + composition.Register(factory => Roles.Enabled ? Roles.Provider : new MembersRoleProvider(factory.GetRequiredService())); + composition.Services.AddScoped(); + composition.Register(factory => factory.GetRequiredService().PublishedSnapshot.Members); composition.RegisterUnique(); composition.RegisterUnique(); @@ -44,9 +45,9 @@ namespace Umbraco.Web.Runtime if (composition.RuntimeState.Level == RuntimeLevel.Run) composition.Register(factory => { - var umbCtx = factory.GetInstance(); - return new UmbracoHelper(umbCtx.IsFrontEndUmbracoRequest ? umbCtx.PublishedRequest?.PublishedContent : null, factory.GetInstance(), - factory.GetInstance(), factory.GetInstance()); + var umbCtx = factory.GetRequiredService(); + return new UmbracoHelper(umbCtx.IsFrontEndUmbracoRequest ? umbCtx.PublishedRequest?.PublishedContent : null, factory.GetRequiredService(), + factory.GetRequiredService(), factory.GetRequiredService()); }); else composition.Register(_ => new UmbracoHelper()); @@ -56,10 +57,13 @@ namespace Umbraco.Web.Runtime // configure the container for web //composition.ConfigureForWeb(); - composition - // TODO: This will depend on if we use ServiceBasedControllerActivator - see notes in Startup.cs - //.ComposeUmbracoControllers(GetType().Assembly) - .SetDefaultRenderMvcController(); // default controller for template views + //composition + /* TODO: This will depend on if we use ServiceBasedControllerActivator - see notes in Startup.cs + * You will likely need to set DefaultRenderMvcControllerType on Umbraco.Web.Composing.Current + * which is what the extension method below did previously. + */ + //.ComposeUmbracoControllers(GetType().Assembly) + //.SetDefaultRenderMvcController(); // default controller for template views //we need to eagerly scan controller types since they will need to be routed composition.WithCollectionBuilder() diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index a2a15ada05..31202255dd 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -356,4 +356,4 @@ - + \ No newline at end of file diff --git a/src/Umbraco.Web/UmbracoApplicationBase.cs b/src/Umbraco.Web/UmbracoApplicationBase.cs index baeab5634c..8ca7aac038 100644 --- a/src/Umbraco.Web/UmbracoApplicationBase.cs +++ b/src/Umbraco.Web/UmbracoApplicationBase.cs @@ -7,6 +7,7 @@ using System.Web; using System.Web.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Options; using Serilog; @@ -21,6 +22,7 @@ using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Logging.Serilog; using Umbraco.Core.Logging.Serilog.Enrichers; +using Umbraco.Infrastructure.Composing; using Umbraco.Net; using Umbraco.Web.Hosting; using Umbraco.Web.Logging; @@ -145,7 +147,7 @@ namespace Umbraco.Web /// protected virtual IRegister GetRegister(GlobalSettings globalSettings) { - return RegisterFactory.Create(globalSettings); + return ServiceCollectionRegistryAdapter.Wrap(new ServiceCollection()); } // events - in the order they trigger @@ -193,14 +195,14 @@ namespace Umbraco.Web Umbraco.Composing.Current.Profiler, Umbraco.Composing.Current.HostingEnvironment, Umbraco.Composing.Current.BackOfficeInfo); - _factory = Current.Factory = _runtime.Configure(register); + //_factory = Current.Factory = _runtime.Configure(register); // now we can add our request based logging enrichers (globally, which is what we were doing in netframework before) - LogContext.Push(new HttpSessionIdEnricher(_factory.GetInstance())); - LogContext.Push(new HttpRequestNumberEnricher(_factory.GetInstance())); - LogContext.Push(new HttpRequestIdEnricher(_factory.GetInstance())); + LogContext.Push(new HttpSessionIdEnricher(_factory.GetRequiredService())); + LogContext.Push(new HttpRequestNumberEnricher(_factory.GetRequiredService())); + LogContext.Push(new HttpRequestIdEnricher(_factory.GetRequiredService())); - _runtime.Start(); + _runtime.Start(null); } // called by ASP.NET (auto event wireup) once per app domain diff --git a/src/Umbraco.Web/UmbracoDefaultOwinStartup.cs b/src/Umbraco.Web/UmbracoDefaultOwinStartup.cs index edd429946f..caa3f441df 100644 --- a/src/Umbraco.Web/UmbracoDefaultOwinStartup.cs +++ b/src/Umbraco.Web/UmbracoDefaultOwinStartup.cs @@ -30,9 +30,9 @@ namespace Umbraco.Web public class UmbracoDefaultOwinStartup { protected IUmbracoContextAccessor UmbracoContextAccessor => Current.UmbracoContextAccessor; - protected GlobalSettings GlobalSettings => Current.Factory.GetInstance(); - protected SecuritySettings SecuritySettings => Current.Factory.GetInstance>().Value; - protected IUserPasswordConfiguration UserPasswordConfig => Current.Factory.GetInstance(); + protected GlobalSettings GlobalSettings => Current.Factory.GetRequiredService(); + protected SecuritySettings SecuritySettings => Current.Factory.GetRequiredService>().Value; + protected IUserPasswordConfiguration UserPasswordConfig => Current.Factory.GetRequiredService(); protected IRuntimeState RuntimeState => Current.RuntimeState; protected ServiceContext Services => Current.Services; protected UmbracoMapper Mapper => Current.Mapper; diff --git a/src/Umbraco.Web/WebApi/Filters/FeatureAuthorizeAttribute.cs b/src/Umbraco.Web/WebApi/Filters/FeatureAuthorizeAttribute.cs index 0cf23a31ca..eb0c36e189 100644 --- a/src/Umbraco.Web/WebApi/Filters/FeatureAuthorizeAttribute.cs +++ b/src/Umbraco.Web/WebApi/Filters/FeatureAuthorizeAttribute.cs @@ -20,7 +20,7 @@ namespace Umbraco.Web.WebApi.Filters public FeatureAuthorizeAttribute() { // attributes have to use Current.Container - _features = Current.Factory?.TryGetInstance(); + _features = Current.Factory?.GetService(); } protected override bool IsAuthorized(HttpActionContext actionContext) diff --git a/src/Umbraco.Web/WebApi/HttpActionContextExtensions.cs b/src/Umbraco.Web/WebApi/HttpActionContextExtensions.cs index 9b337f57aa..ced67bc791 100644 --- a/src/Umbraco.Web/WebApi/HttpActionContextExtensions.cs +++ b/src/Umbraco.Web/WebApi/HttpActionContextExtensions.cs @@ -60,7 +60,7 @@ namespace Umbraco.Web.WebApi throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } - var ioHelper = Current.Factory.GetInstance(); + var ioHelper = Current.Factory.GetRequiredService(); var root = ioHelper.MapPath(rootVirtualPath); //ensure it exists Directory.CreateDirectory(root); diff --git a/src/Umbraco.Web/WebApi/UmbracoApiControllerBase.cs b/src/Umbraco.Web/WebApi/UmbracoApiControllerBase.cs index 3434d825fe..308358f4e8 100644 --- a/src/Umbraco.Web/WebApi/UmbracoApiControllerBase.cs +++ b/src/Umbraco.Web/WebApi/UmbracoApiControllerBase.cs @@ -39,15 +39,15 @@ namespace Umbraco.Web.WebApi /// Dependencies are obtained from the service locator. protected UmbracoApiControllerBase() : this( - Current.Factory.GetInstance(), - Current.Factory.GetInstance(), - Current.Factory.GetInstance(), - Current.Factory.GetInstance(), - Current.Factory.GetInstance(), - Current.Factory.GetInstance(), - Current.Factory.GetInstance(), - Current.Factory.GetInstance(), - Current.Factory.GetInstance() + Current.Factory.GetRequiredService(), + Current.Factory.GetRequiredService(), + Current.Factory.GetRequiredService(), + Current.Factory.GetRequiredService(), + Current.Factory.GetRequiredService(), + Current.Factory.GetRequiredService(), + Current.Factory.GetRequiredService(), + Current.Factory.GetRequiredService(), + Current.Factory.GetRequiredService() ) { } From 6c2ece061970de8af549ca9bb469e4d9a03ee975 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Tue, 27 Oct 2020 11:57:15 +0100 Subject: [PATCH 10/56] Remove build warnings Signed-off-by: Bjarke Berg --- .../Builders/AuditEntryBuilder.cs | 16 ++++++++-------- .../Builders/ContentVariantSaveBuilder.cs | 4 ++-- .../Umbraco.Tests.Common.csproj | 3 +-- .../Umbraco.Tests.Integration.csproj | 1 - 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/Umbraco.Tests.Common/Builders/AuditEntryBuilder.cs b/src/Umbraco.Tests.Common/Builders/AuditEntryBuilder.cs index cf31c2a14f..6efdc8aca8 100644 --- a/src/Umbraco.Tests.Common/Builders/AuditEntryBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/AuditEntryBuilder.cs @@ -25,14 +25,14 @@ namespace Umbraco.Tests.Common.Builders private int? _id; private Guid? _key; private DateTime? _updateDate; - private string _affectedDetails; - private int? _affectedUserId; - private string _eventDetails; - private string _eventType; - private string _performingDetails; - private string _performingIp; - private DateTime? _eventDateUtc; - private int? _performingUserId; + private string _affectedDetails = null; + private int? _affectedUserId = null; + private string _eventDetails = null; + private string _eventType = null; + private string _performingDetails = null; + private string _performingIp = null; + private DateTime? _eventDateUtc = null; + private int? _performingUserId = null; public AuditEntryBuilder(TParent parentBuilder) : base(parentBuilder) { diff --git a/src/Umbraco.Tests.Common/Builders/ContentVariantSaveBuilder.cs b/src/Umbraco.Tests.Common/Builders/ContentVariantSaveBuilder.cs index da031a804c..4b7b4b3d2b 100644 --- a/src/Umbraco.Tests.Common/Builders/ContentVariantSaveBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/ContentVariantSaveBuilder.cs @@ -15,8 +15,8 @@ namespace Umbraco.Tests.Common.Builders private string _name; private CultureInfo _cultureInfo; - private bool? _save; - private bool? _publish; + private bool? _save = null; + private bool? _publish = null; public ContentVariantSaveBuilder(TParent parentBuilder) : base(parentBuilder) { diff --git a/src/Umbraco.Tests.Common/Umbraco.Tests.Common.csproj b/src/Umbraco.Tests.Common/Umbraco.Tests.Common.csproj index 5faf5a1279..aa39070cc7 100644 --- a/src/Umbraco.Tests.Common/Umbraco.Tests.Common.csproj +++ b/src/Umbraco.Tests.Common/Umbraco.Tests.Common.csproj @@ -6,10 +6,9 @@ - + - diff --git a/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj b/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj index b483d690f4..fb7e1b750c 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj +++ b/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj @@ -41,7 +41,6 @@ - all From 1b4f3a9a5f4b2ff49a3d317d9d843128de8bbcbf Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Tue, 27 Oct 2020 11:58:54 +0100 Subject: [PATCH 11/56] Remove test file again Signed-off-by: Bjarke Berg --- .../create_slicing_filter_condition.sh | 25 ------------------- 1 file changed, 25 deletions(-) delete mode 100644 src/Umbraco.Tests.Integration/create_slicing_filter_condition.sh diff --git a/src/Umbraco.Tests.Integration/create_slicing_filter_condition.sh b/src/Umbraco.Tests.Integration/create_slicing_filter_condition.sh deleted file mode 100644 index 6b98271147..0000000000 --- a/src/Umbraco.Tests.Integration/create_slicing_filter_condition.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -filterProperty="Name" - -tests=$1 -testCount=${#tests[@]} -totalAgents=$SYSTEM_TOTALJOBSINPHASE -agentNumber=$SYSTEM_JOBPOSITIONINPHASE - -if [ $totalAgents -eq 0 ]; then totalAgents=1; fi -if [ -z "$agentNumber" ]; then agentNumber=1; fi - -echo "Total agents: $totalAgents" -echo "Agent number: $agentNumber" -echo "Total tests: $testCount" - -echo "Target tests:" -for ((i=$agentNumber; i <= $testCount;i=$((i+$totalAgents)))); do -targetTestName=${tests[$i -1]} -echo "$targetTestName" -filter+="|${filterProperty}=${targetTestName}" -done -filter=${filter#"|"} - -echo "##vso[task.setvariable variable=targetTestsFilter]$filter" From 5d5c4c69041e730e5de44062199d7f92051cfc18 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Tue, 27 Oct 2020 11:57:15 +0100 Subject: [PATCH 12/56] Remove build warnings Signed-off-by: Bjarke Berg --- .../Builders/AuditEntryBuilder.cs | 16 +++++++------- .../Builders/ContentVariantSaveBuilder.cs | 4 ++-- .../Umbraco.Tests.Common.csproj | 3 +-- src/Umbraco.Tests.Integration/Tests.cs | 21 ------------------- .../Umbraco.Tests.Integration.csproj | 1 - 5 files changed, 11 insertions(+), 34 deletions(-) delete mode 100644 src/Umbraco.Tests.Integration/Tests.cs diff --git a/src/Umbraco.Tests.Common/Builders/AuditEntryBuilder.cs b/src/Umbraco.Tests.Common/Builders/AuditEntryBuilder.cs index cf31c2a14f..6efdc8aca8 100644 --- a/src/Umbraco.Tests.Common/Builders/AuditEntryBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/AuditEntryBuilder.cs @@ -25,14 +25,14 @@ namespace Umbraco.Tests.Common.Builders private int? _id; private Guid? _key; private DateTime? _updateDate; - private string _affectedDetails; - private int? _affectedUserId; - private string _eventDetails; - private string _eventType; - private string _performingDetails; - private string _performingIp; - private DateTime? _eventDateUtc; - private int? _performingUserId; + private string _affectedDetails = null; + private int? _affectedUserId = null; + private string _eventDetails = null; + private string _eventType = null; + private string _performingDetails = null; + private string _performingIp = null; + private DateTime? _eventDateUtc = null; + private int? _performingUserId = null; public AuditEntryBuilder(TParent parentBuilder) : base(parentBuilder) { diff --git a/src/Umbraco.Tests.Common/Builders/ContentVariantSaveBuilder.cs b/src/Umbraco.Tests.Common/Builders/ContentVariantSaveBuilder.cs index da031a804c..4b7b4b3d2b 100644 --- a/src/Umbraco.Tests.Common/Builders/ContentVariantSaveBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/ContentVariantSaveBuilder.cs @@ -15,8 +15,8 @@ namespace Umbraco.Tests.Common.Builders private string _name; private CultureInfo _cultureInfo; - private bool? _save; - private bool? _publish; + private bool? _save = null; + private bool? _publish = null; public ContentVariantSaveBuilder(TParent parentBuilder) : base(parentBuilder) { diff --git a/src/Umbraco.Tests.Common/Umbraco.Tests.Common.csproj b/src/Umbraco.Tests.Common/Umbraco.Tests.Common.csproj index 5faf5a1279..aa39070cc7 100644 --- a/src/Umbraco.Tests.Common/Umbraco.Tests.Common.csproj +++ b/src/Umbraco.Tests.Common/Umbraco.Tests.Common.csproj @@ -6,10 +6,9 @@ - + - diff --git a/src/Umbraco.Tests.Integration/Tests.cs b/src/Umbraco.Tests.Integration/Tests.cs deleted file mode 100644 index 1bd39ebad6..0000000000 --- a/src/Umbraco.Tests.Integration/Tests.cs +++ /dev/null @@ -1,21 +0,0 @@ -using NUnit.Framework; -using Umbraco.Tests.Integration.Testing; - -namespace Umbraco.Tests.Integration -{ - [TestFixture] - public class Tests : UmbracoIntegrationTest - { - [Test] - public void Test__Stupid_test_that_only_is_used_to_check_how_long_time_we_spend_int_setup_and_teardown1() - { - - } - - [Test] - public void Test__Stupid_test_that_only_is_used_to_check_how_long_time_we_spend_int_setup_and_teardown2() - { - - } - } -} diff --git a/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj b/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj index b483d690f4..fb7e1b750c 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj +++ b/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj @@ -41,7 +41,6 @@ - all From d4376e00c61fb272d7438c666f37189fa5718b0b Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Tue, 27 Oct 2020 12:01:17 +0100 Subject: [PATCH 13/56] removed test file Signed-off-by: Bjarke Berg --- .../create_slicing_filter_condition.sh | 25 ------------------- 1 file changed, 25 deletions(-) delete mode 100644 src/Umbraco.Tests.Integration/create_slicing_filter_condition.sh diff --git a/src/Umbraco.Tests.Integration/create_slicing_filter_condition.sh b/src/Umbraco.Tests.Integration/create_slicing_filter_condition.sh deleted file mode 100644 index 6b98271147..0000000000 --- a/src/Umbraco.Tests.Integration/create_slicing_filter_condition.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -filterProperty="Name" - -tests=$1 -testCount=${#tests[@]} -totalAgents=$SYSTEM_TOTALJOBSINPHASE -agentNumber=$SYSTEM_JOBPOSITIONINPHASE - -if [ $totalAgents -eq 0 ]; then totalAgents=1; fi -if [ -z "$agentNumber" ]; then agentNumber=1; fi - -echo "Total agents: $totalAgents" -echo "Agent number: $agentNumber" -echo "Total tests: $testCount" - -echo "Target tests:" -for ((i=$agentNumber; i <= $testCount;i=$((i+$totalAgents)))); do -targetTestName=${tests[$i -1]} -echo "$targetTestName" -filter+="|${filterProperty}=${targetTestName}" -done -filter=${filter#"|"} - -echo "##vso[task.setvariable variable=targetTestsFilter]$filter" From 765140b7cde531e7926ebfc7dfb5be90c16dc2ab Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Tue, 27 Oct 2020 14:10:19 +0100 Subject: [PATCH 14/56] Moved unit tests to right project + Cleanup + Write info in test console Signed-off-by: Bjarke Berg --- .../Testing/UmbracoIntegrationTest.cs | 15 +++++++++++---- .../UmbracoIntegrationTestWithContent.cs | 6 +++--- .../DataTypeDefinitionRepositoryTest.cs | 6 ------ .../Repositories/DocumentRepositoryTest.cs | 5 ++--- .../Repositories/RelationRepositoryTest.cs | 6 ------ .../Services/ContentServiceEventTests.cs | 4 ++-- .../Services/ContentServicePerformanceTest.cs | 6 ------ .../Services/ContentServiceTagsTests.cs | 8 ++++---- .../Services/ContentServiceTests.cs | 8 ++++---- .../BackOfficeLookupNormalizerTests.cs | 0 .../Security}/BackOfficeCookieManagerTests.cs | 19 ------------------- 11 files changed, 26 insertions(+), 57 deletions(-) rename src/{Umbraco.Tests.Integration/Umbraco.Web.BackOffice => Umbraco.Tests.UnitTests/Umbraco.Infrastructure/BackOffice}/BackOfficeLookupNormalizerTests.cs (100%) rename src/{Umbraco.Tests.Integration/Umbraco.Web.BackOffice.Security => Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/Security}/BackOfficeCookieManagerTests.cs (90%) diff --git a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs index ef4c7e40d7..f29ca61d65 100644 --- a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs +++ b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs @@ -76,15 +76,22 @@ namespace Umbraco.Tests.Integration.Testing _testTeardown = null; FirstTestInFixture = false; FirstTestInSession = false; + } + [TearDown] + public virtual void TearDown_Logging() + { TestContext.Progress.Write($" {TestContext.CurrentContext.Result.Outcome.Status}"); } + [SetUp] + public virtual void SetUp_Logging() + { + TestContext.Progress.Write($"Start test {TestCount++}: {TestContext.CurrentContext.Test.Name}"); + } [SetUp] public virtual void Setup() { - TestContext.Progress.Write($"Start test {_testCount++}: {TestContext.CurrentContext.Test.Name}"); - var hostBuilder = CreateHostBuilder(); var host = hostBuilder.Start(); @@ -433,7 +440,7 @@ namespace Umbraco.Tests.Integration.Testing #endregion #region Common services - + protected virtual T GetRequiredService() => Services.GetRequiredService(); public Dictionary InMemoryConfiguration { get; } = new Dictionary(); @@ -484,6 +491,6 @@ namespace Umbraco.Tests.Integration.Testing protected static bool FirstTestInSession = true; protected bool FirstTestInFixture = true; - private static int _testCount = 1; + protected static int TestCount = 1; } } diff --git a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTestWithContent.cs b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTestWithContent.cs index 6e39c858d5..ecfc829427 100644 --- a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTestWithContent.cs +++ b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTestWithContent.cs @@ -1,4 +1,5 @@ using System; +using NUnit.Framework; using Umbraco.Core.Models; using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; @@ -12,9 +13,8 @@ namespace Umbraco.Tests.Integration.Testing protected IFileService FileService => GetRequiredService(); protected ContentService ContentService => (ContentService)GetRequiredService(); - public override void Setup() - { - base.Setup(); + [SetUp] + public void Setup(){ CreateTestData(); } diff --git a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs index 5b39eb9864..195ecc5aa2 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs @@ -392,11 +392,5 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Persistence.Repositor Assert.That(doesntExist, Is.False); } } - - [TearDown] - public override void TearDown() - { - base.TearDown(); - } } } diff --git a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/DocumentRepositoryTest.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/DocumentRepositoryTest.cs index 5cf402be26..6d4303f7a1 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/DocumentRepositoryTest.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/DocumentRepositoryTest.cs @@ -47,11 +47,10 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Persistence.Repositor ContentRepositoryBase.ThrowOnWarning = true; } - public override void TearDown() + [TearDown] + public void Teardown() { ContentRepositoryBase.ThrowOnWarning = false; - - base.TearDown(); } public void CreateTestData() diff --git a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/RelationRepositoryTest.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/RelationRepositoryTest.cs index 4d761bdfc1..511d20588f 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/RelationRepositoryTest.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/RelationRepositoryTest.cs @@ -410,12 +410,6 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Persistence.Repositor } } - [TearDown] - public override void TearDown() - { - base.TearDown(); - } - public void CreateTestData() { _relateContent = new RelationType( diff --git a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceEventTests.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceEventTests.cs index 9e1f6a6c6c..83d669a06e 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceEventTests.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceEventTests.cs @@ -47,10 +47,10 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services ContentTypeService.Save(_contentType); } - public override void TearDown() + [TearDown] + public void Teardown() { ContentRepositoryBase.ThrowOnWarning = false; - base.TearDown(); } [Test] diff --git a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServicePerformanceTest.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServicePerformanceTest.cs index 0ac59e240c..b7839d485c 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServicePerformanceTest.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServicePerformanceTest.cs @@ -264,12 +264,6 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services } } - [TearDown] - public override void TearDown() - { - base.TearDown(); - } - public void CreateTestData() { diff --git a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceTagsTests.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceTagsTests.cs index 6473b69d3c..829fcfa65f 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceTagsTests.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceTagsTests.cs @@ -28,16 +28,16 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services private IFileService FileService => GetRequiredService(); public PropertyEditorCollection PropertyEditorCollection => GetRequiredService(); - public override void Setup() + [SetUp] + public void Setup() { - base.Setup(); ContentRepositoryBase.ThrowOnWarning = true; } - public override void TearDown() + [TearDown] + public void Teardown() { ContentRepositoryBase.ThrowOnWarning = false; - base.TearDown(); } [Test] diff --git a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceTests.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceTests.cs index e4bc6bfc8d..5fab0e0d06 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceTests.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServiceTests.cs @@ -48,16 +48,16 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services private PropertyEditorCollection PropertyEditorCollection => GetRequiredService(); private IDocumentRepository DocumentRepository => GetRequiredService(); - public override void Setup() + [SetUp] + public void Setup() { - base.Setup(); ContentRepositoryBase.ThrowOnWarning = true; } - public override void TearDown() + [TearDown] + public void Teardown() { ContentRepositoryBase.ThrowOnWarning = false; - base.TearDown(); } [Test] diff --git a/src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/BackOfficeLookupNormalizerTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/BackOffice/BackOfficeLookupNormalizerTests.cs similarity index 100% rename from src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/BackOfficeLookupNormalizerTests.cs rename to src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/BackOffice/BackOfficeLookupNormalizerTests.cs diff --git a/src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice.Security/BackOfficeCookieManagerTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/Security/BackOfficeCookieManagerTests.cs similarity index 90% rename from src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice.Security/BackOfficeCookieManagerTests.cs rename to src/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/Security/BackOfficeCookieManagerTests.cs index d3424835e1..9a5f9dded7 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice.Security/BackOfficeCookieManagerTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/Security/BackOfficeCookieManagerTests.cs @@ -8,7 +8,6 @@ using Umbraco.Core.Cache; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; using Umbraco.Extensions; -using Umbraco.Tests.Integration.Implementations; using Umbraco.Web; using Umbraco.Web.BackOffice.Controllers; using Umbraco.Web.BackOffice.Security; @@ -21,9 +20,6 @@ namespace Umbraco.Tests.Integration.Umbraco.Web.Backoffice.Security [Test] public void ShouldAuthenticateRequest_When_Not_Configured() { - var testHelper = new TestHelper(); - - var httpContextAccessor = testHelper.GetHttpContextAccessor(); var globalSettings = new GlobalSettings(); var runtime = Mock.Of(x => x.Level == RuntimeLevel.Install); @@ -43,12 +39,6 @@ namespace Umbraco.Tests.Integration.Umbraco.Web.Backoffice.Security [Test] public void ShouldAuthenticateRequest_When_Configured() { - var testHelper = new TestHelper(); - - - //hostingEnvironment.ToAbsolute(globalSettings.UmbracoPath); - - var httpContextAccessor = testHelper.GetHttpContextAccessor(); var globalSettings = new GlobalSettings(); var runtime = Mock.Of(x => x.Level == RuntimeLevel.Run); @@ -68,9 +58,6 @@ namespace Umbraco.Tests.Integration.Umbraco.Web.Backoffice.Security [Test] public void ShouldAuthenticateRequest_Is_Back_Office() { - var testHelper = new TestHelper(); - - var httpContextAccessor = testHelper.GetHttpContextAccessor(); var globalSettings = new GlobalSettings(); var runtime = Mock.Of(x => x.Level == RuntimeLevel.Run); @@ -93,9 +80,6 @@ namespace Umbraco.Tests.Integration.Umbraco.Web.Backoffice.Security [Test] public void ShouldAuthenticateRequest_Force_Auth() { - var testHelper = new TestHelper(); - - var httpContextAccessor = testHelper.GetHttpContextAccessor(); var globalSettings = new GlobalSettings(); var runtime = Mock.Of(x => x.Level == RuntimeLevel.Run); @@ -115,9 +99,6 @@ namespace Umbraco.Tests.Integration.Umbraco.Web.Backoffice.Security [Test] public void ShouldAuthenticateRequest_Not_Back_Office() { - var testHelper = new TestHelper(); - - var httpContextAccessor = testHelper.GetHttpContextAccessor(); var globalSettings = new GlobalSettings(); var runtime = Mock.Of(x => x.Level == RuntimeLevel.Run); From a6e0afe57dcb43a42ba747690d94a9bec6d6b2e2 Mon Sep 17 00:00:00 2001 From: Elitsa Marinovska Date: Tue, 27 Oct 2020 15:42:59 +0100 Subject: [PATCH 15/56] Migrating classes not inhering or having dependencies to EntityBasic --- .../ContentEditing/BackOfficeNotification.cs | 1 - .../Models/ContentEditing/CodeFileDisplay.cs | 6 +-- .../DataTypeConfigurationFieldDisplay.cs | 1 - .../DataTypeConfigurationFieldSave.cs | 1 - .../Models/ContentEditing/DomainSave.cs | 0 .../Models/ContentEditing/EditorNavigation.cs | 2 +- .../GetAvailableCompositionsFilter.cs | 0 .../Models/ContentEditing/IErrorModel.cs | 0 .../ContentEditing/INotificationModel.cs | 0 .../Models/ContentEditing/MacroParameter.cs | 7 +-- .../ContentEditing/MacroParameterDisplay.cs | 6 +-- .../ContentEditing/MessagesExtensions.cs | 53 +++++++++---------- .../ContentEditing/ModelWithNotifications.cs | 0 .../Models/ContentEditing/PostedFiles.cs | 0 .../ContentEditing/PropertyGroupDisplay.cs | 0 .../Models/ContentEditing/SearchResults.cs | 0 .../ContentEditing/SimpleNotificationModel.cs | 0 .../Models/ContentEditing/TemplateDisplay.cs | 0 .../Models/ContentEditing/UserDetail.cs | 5 +- .../UserGroupPermissionsSave.cs | 0 .../Models/ContentEditing/UserProfile.cs | 3 +- 21 files changed, 35 insertions(+), 50 deletions(-) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/BackOfficeNotification.cs (99%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/CodeFileDisplay.cs (95%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/DataTypeConfigurationFieldDisplay.cs (99%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/DataTypeConfigurationFieldSave.cs (96%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/DomainSave.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/EditorNavigation.cs (99%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/GetAvailableCompositionsFilter.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/IErrorModel.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/INotificationModel.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/MacroParameter.cs (91%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/MacroParameterDisplay.cs (90%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/MessagesExtensions.cs (66%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/ModelWithNotifications.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/PostedFiles.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/PropertyGroupDisplay.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/SearchResults.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/SimpleNotificationModel.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/TemplateDisplay.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/UserDetail.cs (97%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/UserGroupPermissionsSave.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/UserProfile.cs (94%) diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/BackOfficeNotification.cs b/src/Umbraco.Core/Models/ContentEditing/BackOfficeNotification.cs similarity index 99% rename from src/Umbraco.Infrastructure/Models/ContentEditing/BackOfficeNotification.cs rename to src/Umbraco.Core/Models/ContentEditing/BackOfficeNotification.cs index 0dd132a503..ffdd26d960 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/BackOfficeNotification.cs +++ b/src/Umbraco.Core/Models/ContentEditing/BackOfficeNotification.cs @@ -25,6 +25,5 @@ namespace Umbraco.Web.Models.ContentEditing [DataMember(Name = "type")] public NotificationStyle NotificationType { get; set; } - } } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/CodeFileDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/CodeFileDisplay.cs similarity index 95% rename from src/Umbraco.Infrastructure/Models/ContentEditing/CodeFileDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/CodeFileDisplay.cs index 7e186932ac..8004e8e731 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/CodeFileDisplay.cs +++ b/src/Umbraco.Core/Models/ContentEditing/CodeFileDisplay.cs @@ -1,11 +1,7 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; -using System.Linq; using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; using Umbraco.Core; namespace Umbraco.Web.Models.ContentEditing diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/DataTypeConfigurationFieldDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/DataTypeConfigurationFieldDisplay.cs similarity index 99% rename from src/Umbraco.Infrastructure/Models/ContentEditing/DataTypeConfigurationFieldDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/DataTypeConfigurationFieldDisplay.cs index 022746c7ec..26d650b02b 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/DataTypeConfigurationFieldDisplay.cs +++ b/src/Umbraco.Core/Models/ContentEditing/DataTypeConfigurationFieldDisplay.cs @@ -38,6 +38,5 @@ namespace Umbraco.Web.Models.ContentEditing /// [DataMember(Name = "config")] public IDictionary Config { get; set; } - } } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/DataTypeConfigurationFieldSave.cs b/src/Umbraco.Core/Models/ContentEditing/DataTypeConfigurationFieldSave.cs similarity index 96% rename from src/Umbraco.Infrastructure/Models/ContentEditing/DataTypeConfigurationFieldSave.cs rename to src/Umbraco.Core/Models/ContentEditing/DataTypeConfigurationFieldSave.cs index 85984df281..d480f4c4b7 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/DataTypeConfigurationFieldSave.cs +++ b/src/Umbraco.Core/Models/ContentEditing/DataTypeConfigurationFieldSave.cs @@ -1,5 +1,4 @@ using System.Runtime.Serialization; -using Newtonsoft.Json.Linq; namespace Umbraco.Web.Models.ContentEditing { diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/DomainSave.cs b/src/Umbraco.Core/Models/ContentEditing/DomainSave.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/DomainSave.cs rename to src/Umbraco.Core/Models/ContentEditing/DomainSave.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/EditorNavigation.cs b/src/Umbraco.Core/Models/ContentEditing/EditorNavigation.cs similarity index 99% rename from src/Umbraco.Infrastructure/Models/ContentEditing/EditorNavigation.cs rename to src/Umbraco.Core/Models/ContentEditing/EditorNavigation.cs index 29922750cf..007c3267cd 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/EditorNavigation.cs +++ b/src/Umbraco.Core/Models/ContentEditing/EditorNavigation.cs @@ -23,4 +23,4 @@ namespace Umbraco.Web.Models.ContentEditing [DataMember(Name = "active")] public bool Active { get; set; } } -} \ No newline at end of file +} diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/GetAvailableCompositionsFilter.cs b/src/Umbraco.Core/Models/ContentEditing/GetAvailableCompositionsFilter.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/GetAvailableCompositionsFilter.cs rename to src/Umbraco.Core/Models/ContentEditing/GetAvailableCompositionsFilter.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/IErrorModel.cs b/src/Umbraco.Core/Models/ContentEditing/IErrorModel.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/IErrorModel.cs rename to src/Umbraco.Core/Models/ContentEditing/IErrorModel.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/INotificationModel.cs b/src/Umbraco.Core/Models/ContentEditing/INotificationModel.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/INotificationModel.cs rename to src/Umbraco.Core/Models/ContentEditing/INotificationModel.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/MacroParameter.cs b/src/Umbraco.Core/Models/ContentEditing/MacroParameter.cs similarity index 91% rename from src/Umbraco.Infrastructure/Models/ContentEditing/MacroParameter.cs rename to src/Umbraco.Core/Models/ContentEditing/MacroParameter.cs index 24dd55338a..ed3551449c 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/MacroParameter.cs +++ b/src/Umbraco.Core/Models/ContentEditing/MacroParameter.cs @@ -1,10 +1,6 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using System.Linq; using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; namespace Umbraco.Web.Models.ContentEditing { @@ -43,6 +39,5 @@ namespace Umbraco.Web.Models.ContentEditing /// [DataMember(Name = "value")] public object Value { get; set; } - } } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/MacroParameterDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/MacroParameterDisplay.cs similarity index 90% rename from src/Umbraco.Infrastructure/Models/ContentEditing/MacroParameterDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/MacroParameterDisplay.cs index 2a07dd84ef..866e631dc4 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/MacroParameterDisplay.cs +++ b/src/Umbraco.Core/Models/ContentEditing/MacroParameterDisplay.cs @@ -1,7 +1,7 @@ -namespace Umbraco.Web.Models.ContentEditing -{ - using System.Runtime.Serialization; +using System.Runtime.Serialization; +namespace Umbraco.Web.Models.ContentEditing +{ /// /// The macro parameter display. /// diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/MessagesExtensions.cs b/src/Umbraco.Core/Models/ContentEditing/MessagesExtensions.cs similarity index 66% rename from src/Umbraco.Infrastructure/Models/ContentEditing/MessagesExtensions.cs rename to src/Umbraco.Core/Models/ContentEditing/MessagesExtensions.cs index c27fa39d44..0f9a1dc500 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/MessagesExtensions.cs +++ b/src/Umbraco.Core/Models/ContentEditing/MessagesExtensions.cs @@ -1,5 +1,4 @@ - -using System.Linq; +using System.Linq; using Umbraco.Core; namespace Umbraco.Web.Models.ContentEditing @@ -11,11 +10,11 @@ namespace Umbraco.Web.Models.ContentEditing if (model.Exists(header, msg, type)) return; model.Notifications.Add(new BackOfficeNotification() - { - Header = header, - Message = msg, - NotificationType = type - }); + { + Header = header, + Message = msg, + NotificationType = type + }); } public static void AddSuccessNotification(this INotificationModel model, string header, string msg) @@ -23,11 +22,11 @@ namespace Umbraco.Web.Models.ContentEditing if (model.Exists(header, msg, NotificationStyle.Success)) return; model.Notifications.Add(new BackOfficeNotification() - { - Header = header, - Message = msg, - NotificationType = NotificationStyle.Success - }); + { + Header = header, + Message = msg, + NotificationType = NotificationStyle.Success + }); } public static void AddErrorNotification(this INotificationModel model, string header, string msg) @@ -35,11 +34,11 @@ namespace Umbraco.Web.Models.ContentEditing if (model.Exists(header, msg, NotificationStyle.Error)) return; model.Notifications.Add(new BackOfficeNotification() - { - Header = header, - Message = msg, - NotificationType = NotificationStyle.Error - }); + { + Header = header, + Message = msg, + NotificationType = NotificationStyle.Error + }); } public static void AddWarningNotification(this INotificationModel model, string header, string msg) @@ -47,11 +46,11 @@ namespace Umbraco.Web.Models.ContentEditing if (model.Exists(header, msg, NotificationStyle.Warning)) return; model.Notifications.Add(new BackOfficeNotification() - { - Header = header, - Message = msg, - NotificationType = NotificationStyle.Warning - }); + { + Header = header, + Message = msg, + NotificationType = NotificationStyle.Warning + }); } public static void AddInfoNotification(this INotificationModel model, string header, string msg) @@ -59,11 +58,11 @@ namespace Umbraco.Web.Models.ContentEditing if (model.Exists(header, msg, NotificationStyle.Info)) return; model.Notifications.Add(new BackOfficeNotification() - { - Header = header, - Message = msg, - NotificationType = NotificationStyle.Info - }); + { + Header = header, + Message = msg, + NotificationType = NotificationStyle.Info + }); } private static bool Exists(this INotificationModel model, string header, string message, NotificationStyle notificationType) => model.Notifications.Any(x => x.Header.InvariantEquals(header) && x.Message.InvariantEquals(message) && x.NotificationType == notificationType); diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/ModelWithNotifications.cs b/src/Umbraco.Core/Models/ContentEditing/ModelWithNotifications.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/ModelWithNotifications.cs rename to src/Umbraco.Core/Models/ContentEditing/ModelWithNotifications.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/PostedFiles.cs b/src/Umbraco.Core/Models/ContentEditing/PostedFiles.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/PostedFiles.cs rename to src/Umbraco.Core/Models/ContentEditing/PostedFiles.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/PropertyGroupDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/PropertyGroupDisplay.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/PropertyGroupDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/PropertyGroupDisplay.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/SearchResults.cs b/src/Umbraco.Core/Models/ContentEditing/SearchResults.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/SearchResults.cs rename to src/Umbraco.Core/Models/ContentEditing/SearchResults.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/SimpleNotificationModel.cs b/src/Umbraco.Core/Models/ContentEditing/SimpleNotificationModel.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/SimpleNotificationModel.cs rename to src/Umbraco.Core/Models/ContentEditing/SimpleNotificationModel.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/TemplateDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/TemplateDisplay.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/TemplateDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/TemplateDisplay.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/UserDetail.cs b/src/Umbraco.Core/Models/ContentEditing/UserDetail.cs similarity index 97% rename from src/Umbraco.Infrastructure/Models/ContentEditing/UserDetail.cs rename to src/Umbraco.Core/Models/ContentEditing/UserDetail.cs index 58cb6d2513..3bcff43fa2 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/UserDetail.cs +++ b/src/Umbraco.Core/Models/ContentEditing/UserDetail.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Runtime.Serialization; @@ -25,7 +24,7 @@ namespace Umbraco.Web.Models.ContentEditing /// [DataMember(Name = "emailHash")] public string EmailHash { get; set; } - + [ReadOnly(true)] [DataMember(Name = "userGroups")] public string[] UserGroups { get; set; } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/UserGroupPermissionsSave.cs b/src/Umbraco.Core/Models/ContentEditing/UserGroupPermissionsSave.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/UserGroupPermissionsSave.cs rename to src/Umbraco.Core/Models/ContentEditing/UserGroupPermissionsSave.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/UserProfile.cs b/src/Umbraco.Core/Models/ContentEditing/UserProfile.cs similarity index 94% rename from src/Umbraco.Infrastructure/Models/ContentEditing/UserProfile.cs rename to src/Umbraco.Core/Models/ContentEditing/UserProfile.cs index 12b6e2a627..18981ece64 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/UserProfile.cs +++ b/src/Umbraco.Core/Models/ContentEditing/UserProfile.cs @@ -1,7 +1,6 @@ using System; using System.ComponentModel.DataAnnotations; using System.Runtime.Serialization; -using Umbraco.Core.Models.Membership; namespace Umbraco.Web.Models.ContentEditing { @@ -23,6 +22,6 @@ namespace Umbraco.Web.Models.ContentEditing int IComparable.CompareTo(object obj) { return String.Compare(Name, ((UserProfile)obj).Name, StringComparison.Ordinal); - } + } } } From c304bf07cbe5117fb57289f99c7d7dbbfd1b00f4 Mon Sep 17 00:00:00 2001 From: Elitsa Marinovska Date: Tue, 27 Oct 2020 15:44:11 +0100 Subject: [PATCH 16/56] Registering UdiJsonConverter globally so that we can migrate EntityBasic to Umbraco.Core --- .../Models/ContentEditing/EntityBasic.cs | 5 +---- .../ModelBinding/UmbracoJsonModelBinderProvider.cs | 7 ++++--- 2 files changed, 5 insertions(+), 7 deletions(-) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/EntityBasic.cs (93%) diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/EntityBasic.cs b/src/Umbraco.Core/Models/ContentEditing/EntityBasic.cs similarity index 93% rename from src/Umbraco.Infrastructure/Models/ContentEditing/EntityBasic.cs rename to src/Umbraco.Core/Models/ContentEditing/EntityBasic.cs index 4776983687..946fd2102a 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/EntityBasic.cs +++ b/src/Umbraco.Core/Models/ContentEditing/EntityBasic.cs @@ -3,10 +3,8 @@ using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Runtime.Serialization; -using Newtonsoft.Json; using Umbraco.Core; using Umbraco.Core.Models.Validation; -using Umbraco.Core.Serialization; namespace Umbraco.Web.Models.ContentEditing { @@ -28,7 +26,6 @@ namespace Umbraco.Web.Models.ContentEditing [DataMember(Name = "udi")] [ReadOnly(true)] - [JsonConverter(typeof(UdiJsonConverter))] public Udi Udi { get; set; } [DataMember(Name = "icon")] @@ -61,7 +58,7 @@ namespace Umbraco.Web.Models.ContentEditing /// The path of the entity /// [DataMember(Name = "path")] - public string Path { get; set; } + public string Path { get; set; } /// /// A collection of extra data that is available for this specific entity/entity type /// diff --git a/src/Umbraco.Web.Common/ModelBinding/UmbracoJsonModelBinderProvider.cs b/src/Umbraco.Web.Common/ModelBinding/UmbracoJsonModelBinderProvider.cs index 94b5b37c82..5543d05d3e 100644 --- a/src/Umbraco.Web.Common/ModelBinding/UmbracoJsonModelBinderProvider.cs +++ b/src/Umbraco.Web.Common/ModelBinding/UmbracoJsonModelBinderProvider.cs @@ -6,9 +6,7 @@ using Microsoft.AspNetCore.Mvc.ModelBinding.Binders; using Microsoft.Extensions.Logging; using Microsoft.Extensions.ObjectPool; using System.Buffers; -using System.Reflection; -using Newtonsoft.Json; -using Newtonsoft.Json.Serialization; +using Umbraco.Core.Serialization; using Umbraco.Web.Common.Formatters; namespace Umbraco.Web.Common.ModelBinding @@ -32,6 +30,9 @@ namespace Umbraco.Web.Common.ModelBinding var ss = jsonOptions.SerializerSettings; // Just use the defaults as base + // Register UdiJsonConverter globally + ss.Converters.Add(new UdiJsonConverter()); + // We need to ignore required attributes when serializing. E.g UserSave.ChangePassword. Otherwise the model is not model bound. ss.ContractResolver = new IgnoreRequiredAttributesResolver(); return new IInputFormatter[] From 8c5daec967e7ea75326a3dddf0f34c3444692816 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Wed, 28 Oct 2020 09:41:23 +0100 Subject: [PATCH 17/56] Clean in tests + Moved logviewer tests from integration to unit tests, and minimized the test file, to speed up the tests Signed-off-by: Bjarke Berg --- .../UmbracoTraceLog.UNITTEST.20181112.json | 2410 ----------------- .../Configurations/umbracoSettings.config | 137 - .../umbracoSettings.minimal.config | 43 - .../Configurations/web.config | 16 - .../Umbraco.Tests.Integration.csproj | 21 - .../UmbracoTraceLog.UNITTEST.20181112.json | 102 + .../Assets}/logviewer.searches.config.js | 0 .../TestHelpers/TestHelper.cs | 6 +- .../BackOfficeLookupNormalizerTests.cs | 2 +- .../Logging/LogviewerTests.cs | 60 +- .../Umbraco.Tests.UnitTests.csproj | 5 + .../Security/BackOfficeCookieManagerTests.cs | 2 +- 12 files changed, 146 insertions(+), 2658 deletions(-) delete mode 100644 src/Umbraco.Tests.Integration/Logging/UmbracoTraceLog.UNITTEST.20181112.json delete mode 100644 src/Umbraco.Tests.Integration/Umbraco.Configuration/Configurations/umbracoSettings.config delete mode 100644 src/Umbraco.Tests.Integration/Umbraco.Configuration/Configurations/umbracoSettings.minimal.config delete mode 100644 src/Umbraco.Tests.Integration/Umbraco.Configuration/Configurations/web.config create mode 100644 src/Umbraco.Tests.UnitTests/TestHelpers/Assets/UmbracoTraceLog.UNITTEST.20181112.json rename src/{Umbraco.Tests.Integration/Logging => Umbraco.Tests.UnitTests/TestHelpers/Assets}/logviewer.searches.config.js (100%) rename src/{Umbraco.Tests.Integration => Umbraco.Tests.UnitTests/Umbraco.Infrastructure}/Logging/LogviewerTests.cs (82%) diff --git a/src/Umbraco.Tests.Integration/Logging/UmbracoTraceLog.UNITTEST.20181112.json b/src/Umbraco.Tests.Integration/Logging/UmbracoTraceLog.UNITTEST.20181112.json deleted file mode 100644 index 3a641a40ea..0000000000 --- a/src/Umbraco.Tests.Integration/Logging/UmbracoTraceLog.UNITTEST.20181112.json +++ /dev/null @@ -1,2410 +0,0 @@ -{"@t":"2018-11-12T08:34:45.8371142Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Booting Umbraco 8.0.0-alpha.52 on DELLBOOK.","TimingId":"9e76e5f","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:45.8770471Z","@mt":"Runtime: {Runtime}","@l":"Debug","Runtime":"Umbraco.Web.Runtime.WebRuntime","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:45.8780049Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Acquiring MainDom.","TimingId":"fa0a8ff","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:45.8820357Z","@mt":"Acquiring.","SourceContext":"Umbraco.Core.MainDom","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:45.8870222Z","@mt":"Acquired.","SourceContext":"Umbraco.Core.MainDom","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:45.8890160Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Aquired.","Duration":9,"TimingId":"fa0a8ff","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:45.8899734Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Determining runtime level.","TimingId":"de01157","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:46.0515757Z","@mt":"Configuring.","@l":"Debug","SourceContext":"Umbraco.Core.Persistence.UmbracoDatabaseFactory","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:46.2091530Z","@mt":"Configured.","@l":"Debug","SourceContext":"Umbraco.Core.Persistence.UmbracoDatabaseFactory","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:46.7853838Z","@mt":"Final upgrade state is {FinalMigrationState}, database contains {DatabaseState}","@l":"Debug","FinalMigrationState":"{6B251841-3069-4AD5-8AE9-861F9523E8DA}","DatabaseState":"{6B251841-3069-4AD5-8AE9-861F9523E8DA}","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:46.7853838Z","@mt":"Runtime level: {RuntimeLevel}","@l":"Debug","RuntimeLevel":"Run","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:46.7853838Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Determined.","Duration":895,"TimingId":"de01157","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:46.7863814Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Resolving component types.","TimingId":"d88f42d","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:46.8053704Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Determining hash of code files on disk","TimingId":"e9adbba","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:46.8232811Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Hash determined","Duration":17,"TimingId":"e9adbba","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:46.8352878Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Composing.IDiscoverable","TimingId":"f2620d0","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:46.8372858Z","@mt":"Assemblies changes detected, need to rescan everything.","@l":"Debug","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:46.8372858Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1055270Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1055270Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Composing.IDiscoverable","Duration":270,"TimingId":"f2620d0","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1065263Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Components.IUmbracoComponent","TimingId":"c2611be","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1065263Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Core.Components.IUmbracoComponent","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1155013Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Core.Components.IUmbracoComponent","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1155013Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Components.IUmbracoComponent","Duration":9,"TimingId":"c2611be","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1155013Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Resolved.","Duration":329,"TimingId":"d88f42d","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1164981Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Preparing component types.","TimingId":"e7ad952","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1444223Z","@mt":"Ordered Components: {SortedComponentTypes}","@l":"Debug","SortedComponentTypes":["Umbraco.Core.Runtime.CoreRuntimeComponent","Umbraco.Web.Runtime.WebRuntimeComponent","Umbraco.Web.Cache.CacheRefresherComponent","Umbraco.Core.Logging.WebProfilerComponent","Umbraco.Core.Components.AuditEventsComponent","Umbraco.Core.Components.ManifestWatcherComponent","Umbraco.Core.Components.RelateOnCopyComponent","Umbraco.Core.Components.RelateOnTrashComponent","Umbraco.Web.SignalR.PreviewHubComponent","Umbraco.Web.Search.ExamineComponent","Umbraco.Web.Scheduling.SchedulerComponent","Umbraco.ModelsBuilder.Umbraco.ModelsBuilderComponent","Umbraco.Web.PublishedCache.NuCache.NuCacheComponent","Umbraco.Web.PropertyEditors.PropertyEditorsComponent","Umbraco.Web.Components.BackOfficeUserAuditEventsComponent","Umbraco.Web.Components.NotificationsComponent","Umbraco.Web.Components.PublicAccessComponent","Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent","Umbraco.Core.Components.UmbracoCoreComponent"],"SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1444223Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Prepared component types.","Duration":27,"TimingId":"e7ad952","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1454207Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Instanciating components.","TimingId":"030399d","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1474142Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Instanciated components.","Duration":2,"TimingId":"030399d","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1484121Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Composing components. (log when >100ms)","TimingId":"ca1430e","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1763377Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Composing.IDiscoverable","TimingId":"2bdc8f5","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1773370Z","@mt":"Getting {TypeName}: found a cached type list.","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1773370Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Composing.IDiscoverable","Duration":0,"TimingId":"2bdc8f5","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1773370Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.PropertyEditors.IPropertyValueConverter","TimingId":"13d4fd9","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1773370Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Core.PropertyEditors.IPropertyValueConverter","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1883061Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Core.PropertyEditors.IPropertyValueConverter","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.1883061Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.PropertyEditors.IPropertyValueConverter","Duration":10,"TimingId":"13d4fd9","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.2152496Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting System.Web.Mvc.IController","TimingId":"5c51949","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.2152496Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"System.Web.Mvc.IController","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.2162328Z","@mt":"Got {TypeName}.","@l":"Debug","TypeName":"System.Web.Mvc.IController","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.2162328Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got System.Web.Mvc.IController","Duration":1,"TimingId":"5c51949","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3169624Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting System.Web.Http.Controllers.IHttpController","TimingId":"5fe641e","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3169624Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"System.Web.Http.Controllers.IHttpController","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3179595Z","@mt":"Got {TypeName}.","@l":"Debug","TypeName":"System.Web.Http.Controllers.IHttpController","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3179595Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got System.Web.Http.Controllers.IHttpController","Duration":1,"TimingId":"5fe641e","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3289305Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Composing.IDiscoverable","TimingId":"6ff2067","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3289305Z","@mt":"Getting {TypeName}: found a cached type list.","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3289305Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Composing.IDiscoverable","Duration":0,"TimingId":"6ff2067","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3289305Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Web.Mvc.SurfaceController","TimingId":"ee39a8f","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3299280Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Web.Mvc.SurfaceController","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3399005Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Web.Mvc.SurfaceController","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3408994Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Web.Mvc.SurfaceController","Duration":11,"TimingId":"ee39a8f","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3418946Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Composing.IDiscoverable","TimingId":"f53e587","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3418946Z","@mt":"Getting {TypeName}: found a cached type list.","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3418946Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Composing.IDiscoverable","Duration":0,"TimingId":"f53e587","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3418946Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Web.WebApi.UmbracoApiController","TimingId":"502b5b8","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3418946Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Web.WebApi.UmbracoApiController","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3498746Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Web.WebApi.UmbracoApiController","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3498746Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Web.WebApi.UmbracoApiController","Duration":8,"TimingId":"502b5b8","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3598465Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Composed Umbraco.Web.Runtime.WebRuntimeComponent.","Duration":163,"TimingId":"f8ec818","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3638356Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Composed components.","Duration":215,"TimingId":"ca1430e","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.3797931Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Initializing components. (log when >100ms)","TimingId":"3ac2c10","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.4137037Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Composing.IDiscoverable","TimingId":"78edf39","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.4137037Z","@mt":"Getting {TypeName}: found a cached type list.","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.4147001Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Composing.IDiscoverable","Duration":0,"TimingId":"78edf39","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.4147001Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.PropertyEditors.IDataEditor","TimingId":"4f94a60","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.4147001Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Core.PropertyEditors.IDataEditor","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.4227008Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Core.PropertyEditors.IDataEditor","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.4227008Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.PropertyEditors.IDataEditor","Duration":8,"TimingId":"4f94a60","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.6530958Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Composing.IDiscoverable","TimingId":"df11c59","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.6530958Z","@mt":"Getting {TypeName}: found a cached type list.","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.6530958Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Composing.IDiscoverable","Duration":0,"TimingId":"df11c59","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.6530958Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Web.Actions.IAction","TimingId":"48d0b43","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.6530958Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Web.Actions.IAction","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.6600450Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Web.Actions.IAction","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:47.6600450Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Web.Actions.IAction","Duration":7,"TimingId":"48d0b43","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:48.7700754Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Initialised Umbraco.Core.Runtime.CoreRuntimeComponent.","Duration":1388,"TimingId":"48c0e52","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:49.0369724Z","@mt":"Loading content from local db...","@l":"Debug","SourceContext":"Umbraco.Web.PublishedCache.NuCache.PublishedSnapshotService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:49.0539274Z","@mt":"Loaded content from local db ({Duration}ms)","@l":"Debug","Duration":16,"SourceContext":"Umbraco.Web.PublishedCache.NuCache.PublishedSnapshotService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.0193175Z","@mt":"Loading media from local db...","@l":"Debug","SourceContext":"Umbraco.Web.PublishedCache.NuCache.PublishedSnapshotService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.0193175Z","@mt":"Loaded media from local db ({Duration}ms)","@l":"Debug","Duration":0,"SourceContext":"Umbraco.Web.PublishedCache.NuCache.PublishedSnapshotService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.2028672Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Initialised Umbraco.Web.Runtime.WebRuntimeComponent.","Duration":1432,"TimingId":"cfd6b8c","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.2048308Z","@mt":"Initializing Umbraco internal event handlers for cache refreshing.","SourceContext":"Umbraco.Web.Cache.CacheRefresherComponent","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.2277994Z","@mt":"Examine shutdown registered with MainDom","@l":"Debug","SourceContext":"Umbraco.Web.Search.ExamineComponent","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.2542336Z","@mt":"{IndexerName} indexer initializing","@l":"Debug","IndexerName":"InternalIndexer","SourceContext":"Umbraco.Examine.UmbracoContentIndexer","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.2981185Z","@mt":"{IndexerName} indexer initializing","@l":"Debug","IndexerName":"InternalMemberIndexer","SourceContext":"Umbraco.Examine.UmbracoMemberIndexer","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.3050966Z","@mt":"{IndexerName} indexer initializing","@l":"Debug","IndexerName":"ExternalIndexer","SourceContext":"Umbraco.Examine.UmbracoContentIndexer","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.3140744Z","@mt":"Adding examine event handlers for {RegisteredIndexers} index providers.","RegisteredIndexers":3,"SourceContext":"Umbraco.Web.Search.ExamineComponent","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.3180640Z","@mt":"Forcing index {IndexerName} to be unlocked since it was left in a locked state","IndexerName":"InternalMemberIndexer","SourceContext":"Umbraco.Web.Search.ExamineComponent","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.3190624Z","@mt":"Forcing index {IndexerName} to be unlocked since it was left in a locked state","IndexerName":"InternalIndexer","SourceContext":"Umbraco.Web.Search.ExamineComponent","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.3200624Z","@mt":"Forcing index {IndexerName} to be unlocked since it was left in a locked state","IndexerName":"ExternalIndexer","SourceContext":"Umbraco.Web.Search.ExamineComponent","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.3210831Z","@mt":"Starting initialize async background thread.","SourceContext":"Umbraco.Web.Search.ExamineComponent","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.3250434Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Composing.IDiscoverable","TimingId":"7581323","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.3250434Z","@mt":"Getting {TypeName}: found a cached type list.","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.3250434Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Composing.IDiscoverable","Duration":0,"TimingId":"7581323","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.3250434Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Web.HealthCheck.HealthCheck","TimingId":"3697358","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.3260718Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Web.HealthCheck.HealthCheck","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.3360158Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Web.HealthCheck.HealthCheck","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.3360158Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Web.HealthCheck.HealthCheck","Duration":10,"TimingId":"3697358","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.3491865Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Web.HealthCheck.NotificationMethods.IHealthCheckNotificationMethod","TimingId":"205a98e","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.3491865Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Web.HealthCheck.NotificationMethods.IHealthCheckNotificationMethod","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.3571685Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Web.HealthCheck.NotificationMethods.IHealthCheckNotificationMethod","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.3571685Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Web.HealthCheck.NotificationMethods.IHealthCheckNotificationMethod","Duration":7,"TimingId":"205a98e","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.4020456Z","@mt":"{LogPrefix} Starting","@l":"Debug","LogPrefix":"[ServerRegistration] ","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.4020456Z","@mt":"{LogPrefix} Starting","@l":"Debug","LogPrefix":"[ServerInstProcess] ","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.4030425Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Initialized components.","Duration":3022,"TimingId":"3ac2c10","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.4120182Z","@mt":"{LogPrefix} Stopping","@l":"Debug","LogPrefix":"[ServerRegistration] ","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:34:50.4120182Z","@mt":"{LogPrefix} Stopping","@l":"Debug","LogPrefix":"[ServerInstProcess] ","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:34:50.4150111Z","@mt":"Rebuilding index","@l":"Debug","SourceContext":"Umbraco.Examine.UmbracoMemberIndexer","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:34:50.4190399Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Booted.","Duration":4586,"TimingId":"9e76e5f","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} -{"@t":"2018-11-12T08:34:50.6145811Z","@mt":"Rebuilding index","@l":"Debug","SourceContext":"Umbraco.Examine.UmbracoContentIndexer","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:34:50.8110564Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"ac83dbf0-66b4-4e36-9adb-02ebba505800","RequestUrl":"http://localhost:8000/","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":2} -{"@t":"2018-11-12T08:34:50.8130503Z","@mt":"New url {Url} detected, re-discovering application url.","Url":"http://localhost:8000/umbraco","SourceContext":"Umbraco.Core.Sync.ApplicationUrlHelper","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":2,"HttpRequestId":"ac83dbf0-66b4-4e36-9adb-02ebba505800"} -{"@t":"2018-11-12T08:34:50.8150525Z","@mt":"ApplicationUrl: {UmbracoAppUrl} (UmbracoModule request)","UmbracoAppUrl":"http://localhost:8000/umbraco","SourceContext":"Umbraco.Core.Sync.ApplicationUrlHelper","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":2,"HttpRequestId":"ac83dbf0-66b4-4e36-9adb-02ebba505800"} -{"@t":"2018-11-12T08:34:50.8369870Z","@mt":"Rebuilding index","@l":"Debug","SourceContext":"Umbraco.Examine.UmbracoContentIndexer","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:34:51.3007471Z","@mt":"Creating snapshot.","@l":"Debug","SourceContext":"Umbraco.Web.PublishedCache.NuCache.ContentStore+Snapshot","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":2,"HttpRequestId":"ac83dbf0-66b4-4e36-9adb-02ebba505800"} -{"@t":"2018-11-12T08:34:51.3007471Z","@mt":"Creating snapshot.","@l":"Debug","SourceContext":"Umbraco.Web.PublishedCache.NuCache.ContentStore+Snapshot","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":2,"HttpRequestId":"ac83dbf0-66b4-4e36-9adb-02ebba505800"} -{"@t":"2018-11-12T08:34:51.3635780Z","@mt":"Umbraco has no content","@l":"Warning","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"WARN ","HttpRequestNumber":2,"HttpRequestId":"ac83dbf0-66b4-4e36-9adb-02ebba505800"} -{"@t":"2018-11-12T08:34:52.5145008Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"ac83dbf0-66b4-4e36-9adb-02ebba505800","RequestUrl":"http://localhost:8000/config/splashes/noNodes.aspx","Duration":1695.4667000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":2} -{"@t":"2018-11-12T08:34:52.5184895Z","@mt":"Dispose snapshot ({Snapshot})","@l":"Debug","Snapshot":"1","SourceContext":"Umbraco.Web.PublishedCache.NuCache.ContentStore+Snapshot","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":2,"HttpRequestId":"ac83dbf0-66b4-4e36-9adb-02ebba505800"} -{"@t":"2018-11-12T08:34:52.5184895Z","@mt":"Dispose snapshot ({Snapshot})","@l":"Debug","Snapshot":"1","SourceContext":"Umbraco.Web.PublishedCache.NuCache.ContentStore+Snapshot","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":2,"HttpRequestId":"ac83dbf0-66b4-4e36-9adb-02ebba505800"} -{"@t":"2018-11-12T08:34:52.6082515Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"880d4fe6-2b6c-427c-9cda-aced3496da47","RequestUrl":"http://localhost:8000/Umbraco/assets/css/nonodes.style.min.css","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":8,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":3} -{"@t":"2018-11-12T08:34:53.0560566Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"1f92d73d-f1eb-48aa-8637-7c4a7930bbab","RequestUrl":"http://localhost:8000/Umbraco/assets/img/nonodesbg.jpg","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":12,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":4} -{"@t":"2018-11-12T08:34:53.0580486Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"352ce5ad-c84b-4acd-bca9-43a0eaa5dd5d","RequestUrl":"http://localhost:8000/Umbraco/assets/img/logo.png","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":5} -{"@t":"2018-11-12T08:34:53.0720141Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"0201add1-2f46-4875-8c23-4048bad00eea","RequestUrl":"http://localhost:8000/Umbraco/assets/fonts/lato/LatoLatin-Bold.woff","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":6} -{"@t":"2018-11-12T08:34:53.1119039Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"4bbe5f67-8b76-4097-a453-c9014054c233","RequestUrl":"http://localhost:8000/Umbraco/assets/fonts/lato/LatoLatin-Italic.woff","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":8,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":7} -{"@t":"2018-11-12T08:34:53.1308532Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"959974f8-aa56-4372-9cce-0858344e3909","RequestUrl":"http://localhost:8000/Umbraco/assets/fonts/lato/LatoLatin-Regular.woff","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":8} -{"@t":"2018-11-12T08:34:53.2595111Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"80172e85-a7b1-4853-a619-0c4a71a7aade","RequestUrl":"http://localhost:8000/favicon.ico","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":8,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":9} -{"@t":"2018-11-12T08:37:54.1751391Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"ff2564b7-d504-4a1d-930e-85ae7857b706","RequestUrl":"http://localhost:8000/umbraco","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":10} -{"@t":"2018-11-12T08:37:57.1382184Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Composing.IDiscoverable","TimingId":"c2d39bb","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpSessionId":"bjm3dva3ozzwjofbsbjeshz1","HttpRequestNumber":10,"HttpRequestId":"ff2564b7-d504-4a1d-930e-85ae7857b706"} -{"@t":"2018-11-12T08:37:57.1382184Z","@mt":"Getting {TypeName}: found a cached type list.","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpSessionId":"bjm3dva3ozzwjofbsbjeshz1","HttpRequestNumber":10,"HttpRequestId":"ff2564b7-d504-4a1d-930e-85ae7857b706"} -{"@t":"2018-11-12T08:37:57.1382184Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Composing.IDiscoverable","Duration":0,"TimingId":"c2d39bb","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpSessionId":"bjm3dva3ozzwjofbsbjeshz1","HttpRequestNumber":10,"HttpRequestId":"ff2564b7-d504-4a1d-930e-85ae7857b706"} -{"@t":"2018-11-12T08:37:57.1382184Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting [Umbraco.Web.Trees.TreeAttribute]Umbraco.Web.Trees.TreeController","TimingId":"9a2f9dc","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpSessionId":"bjm3dva3ozzwjofbsbjeshz1","HttpRequestNumber":10,"HttpRequestId":"ff2564b7-d504-4a1d-930e-85ae7857b706"} -{"@t":"2018-11-12T08:37:57.1382184Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"[Umbraco.Web.Trees.TreeAttribute]Umbraco.Web.Trees.TreeController","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpSessionId":"bjm3dva3ozzwjofbsbjeshz1","HttpRequestNumber":10,"HttpRequestId":"ff2564b7-d504-4a1d-930e-85ae7857b706"} -{"@t":"2018-11-12T08:37:57.1471718Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"[Umbraco.Web.Trees.TreeAttribute]Umbraco.Web.Trees.TreeController","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpSessionId":"bjm3dva3ozzwjofbsbjeshz1","HttpRequestNumber":10,"HttpRequestId":"ff2564b7-d504-4a1d-930e-85ae7857b706"} -{"@t":"2018-11-12T08:37:57.1471718Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got [Umbraco.Web.Trees.TreeAttribute]Umbraco.Web.Trees.TreeController","Duration":8,"TimingId":"9a2f9dc","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpSessionId":"bjm3dva3ozzwjofbsbjeshz1","HttpRequestNumber":10,"HttpRequestId":"ff2564b7-d504-4a1d-930e-85ae7857b706"} -{"@t":"2018-11-12T08:37:57.2349256Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"ff2564b7-d504-4a1d-930e-85ae7857b706","RequestUrl":"http://localhost:8000/umbraco/Default","Duration":3059.7865,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":10} -{"@t":"2018-11-12T08:37:57.2588627Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"47bf742b-9dd2-41f2-8e45-fc17fb44abeb","RequestUrl":"http://localhost:8000/umbraco/Application?umb__rnd=59e73005b5344a136d8da9c5c5b2e23b","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":11} -{"@t":"2018-11-12T08:37:57.2678379Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"e4415a9e-ee00-4eee-b686-72a9ab01a0bc","RequestUrl":"http://localhost:8000/umbraco/assets/css/umbraco.css?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":21,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":12} -{"@t":"2018-11-12T08:37:57.2688368Z","@mt":"Initializing the scheduler","@l":"Debug","SourceContext":"Umbraco.Web.Scheduling.SchedulerComponent","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":11,"HttpRequestId":"47bf742b-9dd2-41f2-8e45-fc17fb44abeb"} -{"@t":"2018-11-12T08:37:57.2728260Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[KeepAlive] ","TaskType":"Umbraco.Web.Scheduling.KeepAlive","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":11,"HttpRequestId":"47bf742b-9dd2-41f2-8e45-fc17fb44abeb"} -{"@t":"2018-11-12T08:37:57.2748198Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"33f8cd80-5570-4bd4-a162-5c03ee027c6e","RequestUrl":"http://localhost:8000/umbraco/lib/font-awesome/css/font-awesome.min.css?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":13} -{"@t":"2018-11-12T08:37:57.2798063Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"892aa9c2-a99d-42ee-83de-f87dd0dd9100","RequestUrl":"http://localhost:8000/umbraco/lib/bootstrap-social/bootstrap-social.css?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":14} -{"@t":"2018-11-12T08:37:57.2798063Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"03854a08-2d0e-4cb3-9e3a-cf04ac94d3c8","RequestUrl":"http://localhost:8000/umbraco/lib/lazyload-js/lazyload.min.js","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":25,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":15} -{"@t":"2018-11-12T08:37:57.2857955Z","@mt":"{LogPrefix} Starting","@l":"Debug","LogPrefix":"[KeepAlive] ","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":11,"HttpRequestId":"47bf742b-9dd2-41f2-8e45-fc17fb44abeb"} -{"@t":"2018-11-12T08:37:57.2867874Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":11,"HttpRequestId":"47bf742b-9dd2-41f2-8e45-fc17fb44abeb"} -{"@t":"2018-11-12T08:37:57.3057363Z","@mt":"{LogPrefix} Starting","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":11,"HttpRequestId":"47bf742b-9dd2-41f2-8e45-fc17fb44abeb"} -{"@t":"2018-11-12T08:37:57.3057363Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":11,"HttpRequestId":"47bf742b-9dd2-41f2-8e45-fc17fb44abeb"} -{"@t":"2018-11-12T08:37:57.3067340Z","@mt":"{LogPrefix} Starting","@l":"Debug","LogPrefix":"[ScheduledTasks] ","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":11,"HttpRequestId":"47bf742b-9dd2-41f2-8e45-fc17fb44abeb"} -{"@t":"2018-11-12T08:37:57.3077316Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[LogScrubber] ","TaskType":"Umbraco.Web.Scheduling.LogScrubber","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":11,"HttpRequestId":"47bf742b-9dd2-41f2-8e45-fc17fb44abeb"} -{"@t":"2018-11-12T08:37:57.3087288Z","@mt":"{LogPrefix} Starting","@l":"Debug","LogPrefix":"[LogScrubber] ","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":11,"HttpRequestId":"47bf742b-9dd2-41f2-8e45-fc17fb44abeb"} -{"@t":"2018-11-12T08:37:57.3097256Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":11,"HttpRequestId":"47bf742b-9dd2-41f2-8e45-fc17fb44abeb"} -{"@t":"2018-11-12T08:37:57.3107228Z","@mt":"{LogPrefix} Starting","@l":"Debug","LogPrefix":"[ServerInstProcess] ","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":11,"HttpRequestId":"47bf742b-9dd2-41f2-8e45-fc17fb44abeb"} -{"@t":"2018-11-12T08:37:57.3107228Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":11,"HttpRequestId":"47bf742b-9dd2-41f2-8e45-fc17fb44abeb"} -{"@t":"2018-11-12T08:37:57.3107228Z","@mt":"{LogPrefix} Starting","@l":"Debug","LogPrefix":"[ServerRegistration] ","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":11,"HttpRequestId":"47bf742b-9dd2-41f2-8e45-fc17fb44abeb"} -{"@t":"2018-11-12T08:37:57.4633152Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"47bf742b-9dd2-41f2-8e45-fc17fb44abeb","RequestUrl":"http://localhost:8000/umbraco/Application?umb__rnd=59e73005b5344a136d8da9c5c5b2e23b","Duration":204.45250000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":11} -{"@t":"2018-11-12T08:37:57.4732893Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"6aff11f3-7a93-4e66-b3e6-29d04d6529d9","RequestUrl":"http://localhost:8000/umbraco/lib/jquery/jquery.min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":25,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":16} -{"@t":"2018-11-12T08:37:57.4772786Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"6b266108-0d9c-46c9-bcf5-6ce8e1cb1486","RequestUrl":"http://localhost:8000/umbraco/lib/jquery-ui-touch-punch/jquery.ui.touch-punch.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":17} -{"@t":"2018-11-12T08:37:57.4772786Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"b2a6d254-587c-4343-ae9b-5850abcf1e29","RequestUrl":"http://localhost:8000/umbraco/lib/jquery-ui/jquery-ui.min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":18} -{"@t":"2018-11-12T08:37:57.4792729Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"6bd4fdb5-a03e-491f-a3ff-31da78c8550a","RequestUrl":"http://localhost:8000/umbraco/lib/angular/angular.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":19} -{"@t":"2018-11-12T08:37:57.4822650Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"33bb2d3a-5b02-45f0-b718-92fa59ba0ff3","RequestUrl":"http://localhost:8000/umbraco/lib/underscore/underscore-min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":20} -{"@t":"2018-11-12T08:37:57.4822650Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"64042e7e-8a86-4e2a-820b-5a770732d5ae","RequestUrl":"http://localhost:8000/umbraco/lib/moment/moment.min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":21,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":21} -{"@t":"2018-11-12T08:37:57.5121855Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"25d8b50f-23ca-40b3-8f64-f0f9a11fe9fc","RequestUrl":"http://localhost:8000/umbraco/lib/animejs/anime.min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":28,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":22} -{"@t":"2018-11-12T08:37:57.5540731Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"193fa41d-ae63-4cfb-8728-61668a655382","RequestUrl":"http://localhost:8000/umbraco/lib/angular-route/angular-route.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":23} -{"@t":"2018-11-12T08:37:57.5540731Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"65fa710d-07e3-40b8-aa9c-a89c99254304","RequestUrl":"http://localhost:8000/umbraco/lib/angular-cookies/angular-cookies.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":24} -{"@t":"2018-11-12T08:37:57.5590599Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"37f712d1-8296-410f-b54a-1d0f3b5b3904","RequestUrl":"http://localhost:8000/umbraco/lib/angular-touch/angular-touch.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":21,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":25} -{"@t":"2018-11-12T08:37:57.5630488Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"24d327f2-6b15-4a7c-8393-8d77b045558f","RequestUrl":"http://localhost:8000/umbraco/lib/angular-sanitize/angular-sanitize.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":26} -{"@t":"2018-11-12T08:37:57.5840009Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"8674caa1-42fe-46c4-aef5-f63294d9ef7d","RequestUrl":"http://localhost:8000/umbraco/lib/angular-animate/angular-animate.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":25,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":27} -{"@t":"2018-11-12T08:37:57.5869892Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"b3cd5a55-ee24-4f2d-a620-84897d51e1a4","RequestUrl":"http://localhost:8000/umbraco/lib/angular-messages/angular-messages.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":28} -{"@t":"2018-11-12T08:37:57.5939662Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"5c281210-8066-413f-9d55-84d70df6eab0","RequestUrl":"http://localhost:8000/umbraco/lib/angular-ui-sortable/sortable.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":29} -{"@t":"2018-11-12T08:37:57.5949638Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"1adf1b2d-b651-4feb-85ae-f8d1ac4ae81a","RequestUrl":"http://localhost:8000/umbraco/lib/angular-dynamic-locale/tmhDynamicLocale.min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":30} -{"@t":"2018-11-12T08:37:57.6119183Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"c8e87ff5-7ac1-4993-854d-74f6135ea777","RequestUrl":"http://localhost:8000/umbraco/lib/ng-file-upload/ng-file-upload.min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":31} -{"@t":"2018-11-12T08:37:57.6119183Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"2cfe443e-28a4-4077-bed8-4a78c0e89c12","RequestUrl":"http://localhost:8000/umbraco/lib/angular-local-storage/angular-local-storage.min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":32} -{"@t":"2018-11-12T08:37:57.6198970Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"2f6380e3-1541-410e-a979-262558749df2","RequestUrl":"http://localhost:8000/umbraco/lib/bootstrap/js/bootstrap.2.3.2.min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":33} -{"@t":"2018-11-12T08:37:57.6268782Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"567fbde1-8569-4807-b97e-f16266f97528","RequestUrl":"http://localhost:8000/umbraco/lib/umbraco/Extensions.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":34} -{"@t":"2018-11-12T08:37:57.6288731Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"2529cc19-01ad-41cc-a557-933548e03efc","RequestUrl":"http://localhost:8000/umbraco/lib/umbraco/NamespaceManager.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":35} -{"@t":"2018-11-12T08:37:57.6288731Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"f84360b5-56fd-48ef-9439-4a393d969582","RequestUrl":"http://localhost:8000/umbraco/lib/umbraco/LegacyUmbClientMgr.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":21,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":36} -{"@t":"2018-11-12T08:37:57.6552791Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"16e3304b-28dc-4537-a792-b844fc6e5912","RequestUrl":"http://localhost:8000/umbraco/lib/umbraco/LegacySpeechBubble.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":37} -{"@t":"2018-11-12T08:37:57.6792092Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"000255bb-0530-4856-9a79-dd026b68aeb6","RequestUrl":"http://localhost:8000/umbraco/js/app.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":25,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":38} -{"@t":"2018-11-12T08:37:57.6792092Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"46189b5a-4f66-44f8-8dfb-70838037d77e","RequestUrl":"http://localhost:8000/umbraco/js/umbraco.services.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":39} -{"@t":"2018-11-12T08:37:57.6812015Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"15080fa1-3aa4-4e88-a9b5-89b74d4ffda7","RequestUrl":"http://localhost:8000/umbraco/js/umbraco.directives.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":40} -{"@t":"2018-11-12T08:37:57.6822086Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"1fc34857-1a76-4b17-ab0d-b10635f7e40c","RequestUrl":"http://localhost:8000/umbraco/js/umbraco.resources.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":21,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":41} -{"@t":"2018-11-12T08:37:57.6841937Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"cd9e6a27-f5b9-458c-93ff-7666d2fdd733","RequestUrl":"http://localhost:8000/umbraco/js/umbraco.interceptors.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":42} -{"@t":"2018-11-12T08:37:57.6891807Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"a5a4b806-673e-4e98-9cb8-42b856013445","RequestUrl":"http://localhost:8000/umbraco/js/umbraco.filters.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":43} -{"@t":"2018-11-12T08:37:57.7061349Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"c3adb018-7adc-4484-a9f7-c4758d7a30a9","RequestUrl":"http://localhost:8000/umbraco/js/umbraco.controllers.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":44} -{"@t":"2018-11-12T08:37:57.7151111Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"3da30277-54c3-46e2-92c3-d6d3c94ed842","RequestUrl":"http://localhost:8000/umbraco/js/init.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":45} -{"@t":"2018-11-12T08:37:57.7161091Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"1ac8fe32-4007-479f-8bf5-f9b13b87c76e","RequestUrl":"http://localhost:8000/umbraco/js/routes.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":28,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":46} -{"@t":"2018-11-12T08:37:57.7320658Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"bf2718f4-a797-4f7b-8ff8-6a504290e615","RequestUrl":"http://localhost:8000/App_Plugins/ModelsBuilder/modelsbuilder.controller.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":47} -{"@t":"2018-11-12T08:37:57.7340606Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"9a0bed25-ef51-4b11-aa70-b5313b46fc93","RequestUrl":"http://localhost:8000/App_Plugins/ModelsBuilder/modelsbuilder.resource.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":21,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":48} -{"@t":"2018-11-12T08:37:57.9255478Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"cd2812ac-0e0d-4310-b249-94f3dc0d4ce4","RequestUrl":"http://localhost:8000/umbraco/views/components/application/umb-app-header.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":49} -{"@t":"2018-11-12T08:37:57.9265453Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"ca8df7a8-7cd3-4cf3-af1a-9de186f8cedd","RequestUrl":"http://localhost:8000/umbraco/views/components/notifications/umb-notifications.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":25,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":50} -{"@t":"2018-11-12T08:37:57.9285449Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"51dad714-8e2d-489a-a69a-74f470eb8ef5","RequestUrl":"http://localhost:8000/umbraco/views/components/editor/umb-editors.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":51} -{"@t":"2018-11-12T08:37:57.9295384Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"b92d587b-f8cd-4124-b872-6cc5cef2f37f","RequestUrl":"http://localhost:8000/umbraco/views/components/application/umb-navigation.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":21,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":52} -{"@t":"2018-11-12T08:37:57.9345288Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"8b6ddcfb-e2c9-479d-b66e-422ed122d9da","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/IsAuthenticated","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":53} -{"@t":"2018-11-12T08:37:57.9863913Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"18ea4d5e-b20b-46af-bf1e-a4622bd9c5a8","RequestUrl":"http://localhost:8000/umbraco/views/components/tree/umb-tree.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":54} -{"@t":"2018-11-12T08:37:57.9873834Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"7ff26013-3de8-4df6-ac09-f74d6e4a5acc","RequestUrl":"http://localhost:8000/umbraco/views/components/application/umb-contextmenu.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":55} -{"@t":"2018-11-12T08:37:58.0003541Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"e6fc3af6-d01d-415a-9ead-095132372546","RequestUrl":"http://localhost:8000/umbraco/views/components/umb-avatar.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":56} -{"@t":"2018-11-12T08:37:58.0332606Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"466692b7-6378-478d-90e0-96ba1bd1bb73","RequestUrl":"http://localhost:8000/umbraco/assets/img/application/logo.png","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":57} -{"@t":"2018-11-12T08:37:58.1938303Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"8b6ddcfb-e2c9-479d-b66e-422ed122d9da","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/IsAuthenticated","Duration":258.3073,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":53} -{"@t":"2018-11-12T08:37:58.2028080Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"2be8bef5-ffca-4df4-9f81-b9129af3d98f","RequestUrl":"http://localhost:8000/umbraco/views/common/login.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":58} -{"@t":"2018-11-12T08:37:58.2197622Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"2e3129d3-e526-4cde-8904-56b861472d78","RequestUrl":"http://localhost:8000/umbraco/views/common/dialogs/login.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":59} -{"@t":"2018-11-12T08:37:58.2746165Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"5b19f3cd-e014-4809-9e73-8b304336ac91","RequestUrl":"http://localhost:8000/umbraco/LocalizedText","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":60} -{"@t":"2018-11-12T08:37:58.2756122Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"40a663a8-866c-437a-a616-2fb1d3881200","RequestUrl":"http://localhost:8000/umbraco/views/components/buttons/umb-button.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":21,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":61} -{"@t":"2018-11-12T08:37:58.2875801Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"54241569-97de-48dc-99f2-fa70798aa6be","RequestUrl":"http://localhost:8000/umbraco/assets/img/installer.jpg","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":62} -{"@t":"2018-11-12T08:37:58.3593883Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"5b19f3cd-e014-4809-9e73-8b304336ac91","RequestUrl":"http://localhost:8000/umbraco/LocalizedText","Duration":84.7718,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":60} -{"@t":"2018-11-12T08:38:03.0847807Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"9b93e05a-aad8-461d-81f1-42d3fe481078","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/PostLogin","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":63} -{"@t":"2018-11-12T08:38:04.2227119Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"b546f880-2012-4905-bc49-9a290ebec282","RequestUrl":"http://localhost:8000/umbraco/lib/angular-local-storage/angular-local-storage.min.js.map","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":64} -{"@t":"2018-11-12T08:38:04.2247067Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"a8336ec9-4521-4c49-b0e8-276f70eaf235","RequestUrl":"http://localhost:8000/umbraco/lib/angular-dynamic-locale/tmhDynamicLocale.min.js.map","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":65} -{"@t":"2018-11-12T08:38:04.3015021Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Composing.IDiscoverable","TimingId":"e783188","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":63,"HttpRequestId":"9b93e05a-aad8-461d-81f1-42d3fe481078"} -{"@t":"2018-11-12T08:38:04.3015021Z","@mt":"Getting {TypeName}: found a cached type list.","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":63,"HttpRequestId":"9b93e05a-aad8-461d-81f1-42d3fe481078"} -{"@t":"2018-11-12T08:38:04.3015021Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Composing.IDiscoverable","Duration":0,"TimingId":"e783188","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":63,"HttpRequestId":"9b93e05a-aad8-461d-81f1-42d3fe481078"} -{"@t":"2018-11-12T08:38:04.3015021Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Cache.ICacheRefresher","TimingId":"7efaac8","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":63,"HttpRequestId":"9b93e05a-aad8-461d-81f1-42d3fe481078"} -{"@t":"2018-11-12T08:38:04.3015021Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Core.Cache.ICacheRefresher","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":63,"HttpRequestId":"9b93e05a-aad8-461d-81f1-42d3fe481078"} -{"@t":"2018-11-12T08:38:04.3084821Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Core.Cache.ICacheRefresher","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":63,"HttpRequestId":"9b93e05a-aad8-461d-81f1-42d3fe481078"} -{"@t":"2018-11-12T08:38:04.3084821Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Cache.ICacheRefresher","Duration":6,"TimingId":"7efaac8","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":63,"HttpRequestId":"9b93e05a-aad8-461d-81f1-42d3fe481078"} -{"@t":"2018-11-12T08:38:04.3184548Z","@mt":"Invoking refresher {RefresherType} on local server for message type {MessageType}","@l":"Debug","RefresherType":"Umbraco.Web.Cache.UserCacheRefresher","MessageType":"RefreshById","SourceContext":"Umbraco.Core.Sync.ServerMessengerBase","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":63,"HttpRequestId":"9b93e05a-aad8-461d-81f1-42d3fe481078"} -{"@t":"2018-11-12T08:38:04.4231755Z","@mt":"[{EventType}] Event Id: {EventId}, State: {State}","EventType":"Information","EventId":0,"State":"Login attempt succeeded for username warren@umbraco.com from IP address ::1","SourceContext":"Umbraco.Core.Logging.OwinLogger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":63,"HttpRequestId":"9b93e05a-aad8-461d-81f1-42d3fe481078"} -{"@t":"2018-11-12T08:38:04.4241729Z","@mt":"[{EventType}] Event Id: {EventId}, State: {State}","EventType":"Information","EventId":0,"State":"User: warren@umbraco.com logged in from IP address ::1","SourceContext":"Umbraco.Core.Logging.OwinLogger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":63,"HttpRequestId":"9b93e05a-aad8-461d-81f1-42d3fe481078"} -{"@t":"2018-11-12T08:38:04.9607485Z","@mt":"Could not validate XSRF token","@l":"Error","@x":"System.Web.Mvc.HttpAntiForgeryException (0x80004005): The anti-forgery token could not be decrypted. If this application is hosted by a Web Farm or cluster, ensure that all machines are running the same version of ASP.NET Web Pages and that the configuration specifies explicit encryption and validation keys. AutoGenerate cannot be used in a cluster.\r\n at System.Web.Helpers.AntiXsrf.AntiForgeryTokenSerializer.Deserialize(String serializedToken)\r\n at System.Web.Helpers.AntiXsrf.AntiForgeryWorker.Validate(HttpContextBase httpContext, String cookieToken, String formToken)\r\n at System.Web.Helpers.AntiForgery.Validate(String cookieToken, String formToken)\r\n at Umbraco.Web.WebApi.Filters.AngularAntiForgeryHelper.ValidateTokens(String cookieToken, String headerToken) in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\WebApi\\Filters\\AngularAntiForgeryHelper.cs:line 58","SourceContext":"Umbraco.Web.WebApi.Filters.AngularAntiForgeryHelper","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ERROR","HttpRequestNumber":63,"HttpRequestId":"9b93e05a-aad8-461d-81f1-42d3fe481078"} -{"@t":"2018-11-12T08:38:05.0116370Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"9b93e05a-aad8-461d-81f1-42d3fe481078","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/PostLogin","Duration":1926.8563000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":63} -{"@t":"2018-11-12T08:38:05.1352743Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"2b3637b3-c40d-48b3-a810-d6f07b3f68f3","RequestUrl":"http://localhost:8000/umbraco/ServerVariables?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":66} -{"@t":"2018-11-12T08:38:05.3247725Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"2b3637b3-c40d-48b3-a810-d6f07b3f68f3","RequestUrl":"http://localhost:8000/umbraco/ServerVariables?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","Duration":189.4982,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":66} -{"@t":"2018-11-12T08:38:05.3327449Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"19c06b62-9200-41af-964f-3c1b7e006c9c","RequestUrl":"http://localhost:8000/umbraco/lib/angular-i18n/angular-locale_en-US.js","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":67} -{"@t":"2018-11-12T08:38:05.3347401Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"a085ad93-8943-4275-ae6e-9997f2162a93","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/BackOfficeAssets/GetSupportedMomentLocales","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":21,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":68} -{"@t":"2018-11-12T08:38:05.3357371Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"ee4c19ad-54fb-4a22-bf6e-9c9da26fb438","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/UpdateCheck/GetCheck","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":69} -{"@t":"2018-11-12T08:38:05.3377312Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"e1087f73-b29f-4763-b894-b69dcddd0945","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Tour/GetTours","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":70} -{"@t":"2018-11-12T08:38:05.3467067Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"fe24fd53-b61f-47a8-9706-de9ef031a2b6","RequestUrl":"http://localhost:8000/umbraco/views/components/application/umb-sections.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":71} -{"@t":"2018-11-12T08:38:05.3666541Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"08c54d21-7a1c-40f9-8740-f7e92bda28d7","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Content/AllowsCultureVariation","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":25,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":72} -{"@t":"2018-11-12T08:38:05.3995690Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"b5c6de2e-81c0-41bd-9e0e-e0185691a5eb","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Section/GetSections","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":73} -{"@t":"2018-11-12T08:38:05.4075601Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"b42d2134-aa4b-40a4-8484-d4633d22eef3","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Section/GetSections","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":74} -{"@t":"2018-11-12T08:38:05.5262284Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"08c54d21-7a1c-40f9-8740-f7e92bda28d7","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Content/AllowsCultureVariation","Duration":159.5743,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":25,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":72} -{"@t":"2018-11-12T08:38:05.5262284Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"a085ad93-8943-4275-ae6e-9997f2162a93","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/BackOfficeAssets/GetSupportedMomentLocales","Duration":191.4883,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":21,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":68} -{"@t":"2018-11-12T08:38:05.5352025Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"2a3b9da8-441b-422a-b405-4471de4d908d","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoTrees/ApplicationTree/GetApplicationTrees?application=content&tree=&isDialog=false","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":75} -{"@t":"2018-11-12T08:38:05.5611334Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting [Umbraco.Web.Models.Trees.ApplicationAttribute]Umbraco.Web.Models.Trees.IApplication","TimingId":"d2e9dc6","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":74,"HttpRequestId":"b42d2134-aa4b-40a4-8484-d4633d22eef3"} -{"@t":"2018-11-12T08:38:05.5611334Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"[Umbraco.Web.Models.Trees.ApplicationAttribute]Umbraco.Web.Models.Trees.IApplication","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":74,"HttpRequestId":"b42d2134-aa4b-40a4-8484-d4633d22eef3"} -{"@t":"2018-11-12T08:38:05.5661208Z","@mt":"Got {TypeName}.","@l":"Debug","TypeName":"[Umbraco.Web.Models.Trees.ApplicationAttribute]Umbraco.Web.Models.Trees.IApplication","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":74,"HttpRequestId":"b42d2134-aa4b-40a4-8484-d4633d22eef3"} -{"@t":"2018-11-12T08:38:05.5661208Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got [Umbraco.Web.Models.Trees.ApplicationAttribute]Umbraco.Web.Models.Trees.IApplication","Duration":5,"TimingId":"d2e9dc6","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":74,"HttpRequestId":"b42d2134-aa4b-40a4-8484-d4633d22eef3"} -{"@t":"2018-11-12T08:38:05.6060173Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"e1087f73-b29f-4763-b894-b69dcddd0945","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Tour/GetTours","Duration":268.28610000000003,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":70} -{"@t":"2018-11-12T08:38:05.6129965Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"0e9e51e5-7a7e-4f8b-9189-2599f0327b9f","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/CurrentUser/GetUserTours","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":21,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":76} -{"@t":"2018-11-12T08:38:05.6848036Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"0e9e51e5-7a7e-4f8b-9189-2599f0327b9f","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/CurrentUser/GetUserTours","Duration":71.8071,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":21,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":76} -{"@t":"2018-11-12T08:38:05.6858005Z","@mt":"The tree definition: {AddElement} could not be resolved to a .Net object type","@l":"Warning","AddElement":"","SourceContext":"Umbraco.Web.Services.ApplicationTreeService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"WARN ","HttpRequestNumber":73,"HttpRequestId":"b5c6de2e-81c0-41bd-9e0e-e0185691a5eb"} -{"@t":"2018-11-12T08:38:05.6887919Z","@mt":"The tree definition: {AddElement} could not be resolved to a .Net object type","@l":"Warning","AddElement":"","SourceContext":"Umbraco.Web.Services.ApplicationTreeService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"WARN ","HttpRequestNumber":73,"HttpRequestId":"b5c6de2e-81c0-41bd-9e0e-e0185691a5eb"} -{"@t":"2018-11-12T08:38:05.6897893Z","@mt":"The tree definition: {AddElement} could not be resolved to a .Net object type","@l":"Warning","AddElement":"","SourceContext":"Umbraco.Web.Services.ApplicationTreeService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"WARN ","HttpRequestNumber":73,"HttpRequestId":"b5c6de2e-81c0-41bd-9e0e-e0185691a5eb"} -{"@t":"2018-11-12T08:38:05.6907902Z","@mt":"The tree definition: {AddElement} could not be resolved to a .Net object type","@l":"Warning","AddElement":"","SourceContext":"Umbraco.Web.Services.ApplicationTreeService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"WARN ","HttpRequestNumber":73,"HttpRequestId":"b5c6de2e-81c0-41bd-9e0e-e0185691a5eb"} -{"@t":"2018-11-12T08:38:05.6917843Z","@mt":"The tree definition: {AddElement} could not be resolved to a .Net object type","@l":"Warning","AddElement":"","SourceContext":"Umbraco.Web.Services.ApplicationTreeService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"WARN ","HttpRequestNumber":73,"HttpRequestId":"b5c6de2e-81c0-41bd-9e0e-e0185691a5eb"} -{"@t":"2018-11-12T08:38:05.6917843Z","@mt":"The tree definition: {AddElement} could not be resolved to a .Net object type","@l":"Warning","AddElement":"","SourceContext":"Umbraco.Web.Services.ApplicationTreeService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"WARN ","HttpRequestNumber":73,"HttpRequestId":"b5c6de2e-81c0-41bd-9e0e-e0185691a5eb"} -{"@t":"2018-11-12T08:39:18.1562229Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"f9683dae-21bd-479a-8fca-504b288c3875","RequestUrl":"http://localhost:8000/umbraco","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":37,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":77} -{"@t":"2018-11-12T08:39:18.1562229Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"511a0884-22a5-4369-beb9-80e75b1cb4dd","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":78} -{"@t":"2018-11-12T08:39:18.1632038Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"7211c02","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:18.1961166Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":33,"TimingId":"7211c02","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:18.1971147Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:18.2011032Z","@mt":"Does not run on servers with unknown role.","@l":"Debug","SourceContext":"Umbraco.Web.Scheduling.LogScrubber","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:18.2011032Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[LogScrubber] ","TaskType":"Umbraco.Web.Scheduling.LogScrubber","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:18.2021053Z","@mt":"Does not run on servers with unknown role.","@l":"Debug","SourceContext":"Umbraco.Web.Scheduling.ScheduledPublishing","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:18.2021053Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:18.2040952Z","@mt":"Does not run on servers with unknown role.","@l":"Debug","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":38,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:18.2050926Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":38,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:18.2060893Z","@mt":"Does not run on servers with unknown role.","@l":"Debug","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:18.2060893Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[KeepAlive] ","TaskType":"Umbraco.Web.Scheduling.KeepAlive","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:18.2210546Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"511a0884-22a5-4369-beb9-80e75b1cb4dd","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":63.8342,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":78} -{"@t":"2018-11-12T08:39:18.2090826Z","@mt":"Unhandled controller exception occurred for request '{RequestUrl}'","@l":"Error","@x":"System.AggregateException: One or more errors occurred. ---> System.InvalidOperationException: This document already has an 'XmlDeclaration' node.\r\n at System.Xml.XmlDocument.IsValidChildType(XmlNodeType type)\r\n at System.Xml.XmlDocument.AppendChildForLoad(XmlNode newChild, XmlDocument doc)\r\n at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)\r\n at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)\r\n at System.Xml.XmlDocument.Load(XmlReader reader)\r\n at System.Xml.XmlDocument.Load(String filename)\r\n at umbraco.cms.businesslogic.packager.data.Reload(String dataSource) in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\_Legacy\\Packager\\data.cs:line 69\r\n at umbraco.cms.businesslogic.packager.data.GetAllPackages(String dataSource) in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\_Legacy\\Packager\\data.cs:line 170\r\n at umbraco.cms.businesslogic.packager.CreatedPackage.GetAllCreatedPackages() in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\_Legacy\\Packager\\PackageInstance\\CreatedPackage.cs:line 53\r\n at Umbraco.Web.Trees.PackagesTreeController.GetTreeNodes(String id, FormDataCollection queryStrings) in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\Trees\\PackagesTreeController.cs:line 41\r\n at Umbraco.Web.Trees.TreeControllerBase.GetNodes(String id, FormDataCollection queryStrings) in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\Trees\\TreeControllerBase.cs:line 104\r\n at Umbraco.Web.Trees.ApplicationTreeExtensions.TryLoadFromControllerTree(ApplicationTree appTree, String id, FormDataCollection formCollection, HttpControllerContext controllerContext) in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\Trees\\ApplicationTreeExtensions.cs:line 167\r\n at Umbraco.Web.Trees.ApplicationTreeController.d__2.MoveNext() in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\Trees\\ApplicationTreeController.cs:line 164\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Umbraco.Web.Trees.ApplicationTreeController.d__0.MoveNext() in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\Trees\\ApplicationTreeController.cs:line 52\r\n --- End of inner exception stack trace ---\r\n at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)\r\n at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)\r\n at System.Threading.Tasks.Task`1.get_Result()\r\n at Umbraco.Web.Editors.SectionController.GetSections() in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\Editors\\SectionController.cs:line 54\r\n at lambda_method(Closure , Object , Object[] )\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_1.b__3(Object instance, Object[] methodParameters)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ApiControllerActionInvoker.d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.AuthorizationFilterAttribute.d__3.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.AuthorizationFilterAttribute.d__3.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.AuthorizationFilterAttribute.d__3.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ExceptionFilterResult.d__6.MoveNext()\r\n---> (Inner Exception #0) System.InvalidOperationException: This document already has an 'XmlDeclaration' node.\r\n at System.Xml.XmlDocument.IsValidChildType(XmlNodeType type)\r\n at System.Xml.XmlDocument.AppendChildForLoad(XmlNode newChild, XmlDocument doc)\r\n at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)\r\n at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)\r\n at System.Xml.XmlDocument.Load(XmlReader reader)\r\n at System.Xml.XmlDocument.Load(String filename)\r\n at umbraco.cms.businesslogic.packager.data.Reload(String dataSource) in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\_Legacy\\Packager\\data.cs:line 69\r\n at umbraco.cms.businesslogic.packager.data.GetAllPackages(String dataSource) in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\_Legacy\\Packager\\data.cs:line 170\r\n at umbraco.cms.businesslogic.packager.CreatedPackage.GetAllCreatedPackages() in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\_Legacy\\Packager\\PackageInstance\\CreatedPackage.cs:line 53\r\n at Umbraco.Web.Trees.PackagesTreeController.GetTreeNodes(String id, FormDataCollection queryStrings) in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\Trees\\PackagesTreeController.cs:line 41\r\n at Umbraco.Web.Trees.TreeControllerBase.GetNodes(String id, FormDataCollection queryStrings) in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\Trees\\TreeControllerBase.cs:line 104\r\n at Umbraco.Web.Trees.ApplicationTreeExtensions.TryLoadFromControllerTree(ApplicationTree appTree, String id, FormDataCollection formCollection, HttpControllerContext controllerContext) in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\Trees\\ApplicationTreeExtensions.cs:line 167\r\n at Umbraco.Web.Trees.ApplicationTreeController.d__2.MoveNext() in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\Trees\\ApplicationTreeController.cs:line 164\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Umbraco.Web.Trees.ApplicationTreeController.d__0.MoveNext() in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\Trees\\ApplicationTreeController.cs:line 52<---\r\n","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Section/GetSections","SourceContext":"Umbraco.Web.Editors.SectionController","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ERROR","HttpRequestNumber":74,"HttpRequestId":"b42d2134-aa4b-40a4-8484-d4633d22eef3"} -{"@t":"2018-11-12T08:39:18.2090826Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:18.2250424Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"b5c6de2e-81c0-41bd-9e0e-e0185691a5eb","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Section/GetSections","Duration":72824.4796,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":73} -{"@t":"2018-11-12T08:39:18.2479793Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"4b4ea270-3ad3-438b-8092-777c19b737eb","RequestUrl":"http://localhost:8000/umbraco/views/common/dashboard.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":79} -{"@t":"2018-11-12T08:39:18.2609438Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"b42d2134-aa4b-40a4-8484-d4633d22eef3","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Section/GetSections","Duration":72851.4048,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":74} -{"@t":"2018-11-12T08:39:18.2888691Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"9691f36c-c75f-4579-9b8b-76450eb980b5","RequestUrl":"http://localhost:8000/umbraco/views/components/overlays/umb-overlay.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":80} -{"@t":"2018-11-12T08:39:18.2968476Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"c32e00cd-8de7-4159-9a0e-e4c806065ebb","RequestUrl":"http://localhost:8000/umbraco/assets/img/loader.gif","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":81} -{"@t":"2018-11-12T08:39:18.3058237Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"f9683dae-21bd-479a-8fca-504b288c3875","RequestUrl":"http://localhost:8000/umbraco/Default","Duration":149.60080000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":37,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":77} -{"@t":"2018-11-12T08:39:18.3058237Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"ac61fadb-1242-4fe3-8693-59fb261d6fc4","RequestUrl":"http://localhost:8000/umbraco/views/components/umb-load-indicator.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":82} -{"@t":"2018-11-12T08:39:18.3147997Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"0a9ffc1a-f6d6-4278-b1e2-38577b3e92d2","RequestUrl":"http://localhost:8000/umbraco/LocalizedText","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":37,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":83} -{"@t":"2018-11-12T08:39:18.3167942Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"316404b6-1371-48c1-9e12-3ab2fcf9ff53","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Dashboard/GetDashboard?section=content","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":84} -{"@t":"2018-11-12T08:39:18.3347461Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"0a9ffc1a-f6d6-4278-b1e2-38577b3e92d2","RequestUrl":"http://localhost:8000/umbraco/LocalizedText","Duration":19.9464,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":37,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":83} -{"@t":"2018-11-12T08:39:18.3526980Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"ccb26207-a349-443d-a7ce-1602b234201d","RequestUrl":"http://localhost:8000/umbraco/views/common/overlays/ysod/ysod.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":85} -{"@t":"2018-11-12T08:39:18.3576851Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"316404b6-1371-48c1-9e12-3ab2fcf9ff53","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Dashboard/GetDashboard?section=content","Duration":38.8969,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":84} -{"@t":"2018-11-12T08:39:18.3975785Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"6d82982b-bd76-4af2-b005-69a9a4d4d9b6","RequestUrl":"http://localhost:8000/umbraco/views/components/tabs/umb-tabs-nav.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":86} -{"@t":"2018-11-12T08:39:18.4015667Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"8ca61d46-e3d2-4465-be6d-a0f5e24543bb","RequestUrl":"http://localhost:8000/umbraco/views/components/tabs/umb-tab-content.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":87} -{"@t":"2018-11-12T08:39:18.4733768Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"2a3b9da8-441b-422a-b405-4471de4d908d","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoTrees/ApplicationTree/GetApplicationTrees?application=content&tree=&isDialog=false","Duration":72937.1767,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":75} -{"@t":"2018-11-12T08:39:18.5342130Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"9501395a-270f-4103-b122-96c09e8df064","RequestUrl":"http://localhost:8000/umbraco/assets/css/umbraco.css?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":88} -{"@t":"2018-11-12T08:39:18.5352119Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"fd728de5-d790-4df1-8482-9bdeacf172e1","RequestUrl":"http://localhost:8000/umbraco/Application?umb__rnd=928550284e1883f3256a93ce73f74afd","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":37,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":89} -{"@t":"2018-11-12T08:39:18.5352119Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"dc000af8-7a11-4cea-9196-2aa562970b43","RequestUrl":"http://localhost:8000/umbraco/lib/bootstrap-social/bootstrap-social.css?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":90} -{"@t":"2018-11-12T08:39:18.5372051Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"fd8a508a-37b1-4b50-8cba-e7601c1d7ab0","RequestUrl":"http://localhost:8000/umbraco/lib/lazyload-js/lazyload.min.js","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":91} -{"@t":"2018-11-12T08:39:18.5382018Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"8e82094b-1516-4b90-ba25-b72686bca99f","RequestUrl":"http://localhost:8000/umbraco/lib/font-awesome/css/font-awesome.min.css?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":92} -{"@t":"2018-11-12T08:39:18.5591466Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"fd728de5-d790-4df1-8482-9bdeacf172e1","RequestUrl":"http://localhost:8000/umbraco/Application?umb__rnd=928550284e1883f3256a93ce73f74afd","Duration":23.9347,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":37,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":89} -{"@t":"2018-11-12T08:39:18.6678553Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"ee4c19ad-54fb-4a22-bf6e-9c9da26fb438","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/UpdateCheck/GetCheck","Duration":73332.1182,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":69} -{"@t":"2018-11-12T08:39:18.9451140Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"7f6ea5f4-d112-4285-aef8-a599fe494dab","RequestUrl":"http://localhost:8000/umbraco/lib/jquery/jquery.min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":93} -{"@t":"2018-11-12T08:39:18.9491031Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"de3f3aca-ae3b-4c5e-b1a3-1324ffd96630","RequestUrl":"http://localhost:8000/umbraco/lib/jquery-ui/jquery-ui.min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":94} -{"@t":"2018-11-12T08:39:18.9520966Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"50c7359e-c05f-4536-b438-8bcfa9aa0859","RequestUrl":"http://localhost:8000/umbraco/lib/jquery-ui-touch-punch/jquery.ui.touch-punch.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":95} -{"@t":"2018-11-12T08:39:18.9540902Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"0948fb64-6899-4c78-9ae9-374dfa47e528","RequestUrl":"http://localhost:8000/umbraco/lib/angular/angular.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":96} -{"@t":"2018-11-12T08:39:18.9570855Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"118cb536-2b3d-4bcc-bb06-58c1837a8d09","RequestUrl":"http://localhost:8000/umbraco/lib/underscore/underscore-min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":97} -{"@t":"2018-11-12T08:39:18.9590959Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"c39e6ce4-14de-4cc5-864c-e22a814bb1e0","RequestUrl":"http://localhost:8000/umbraco/lib/moment/moment.min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":98} -{"@t":"2018-11-12T08:39:18.9620681Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"4b69ff9f-48c9-4ae4-82b5-4c2984c68068","RequestUrl":"http://localhost:8000/umbraco/lib/animejs/anime.min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":99} -{"@t":"2018-11-12T08:39:18.9690496Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"45f7cd6a-4703-46d4-a019-ed529efaad16","RequestUrl":"http://localhost:8000/umbraco/lib/angular-route/angular-route.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":100} -{"@t":"2018-11-12T08:39:18.9720421Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"ca49266d-0016-4838-a9a1-a33aa729f36d","RequestUrl":"http://localhost:8000/umbraco/lib/angular-cookies/angular-cookies.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":101} -{"@t":"2018-11-12T08:39:18.9780261Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"589a05a8-6fa7-4fa2-9842-dbc714bccd4d","RequestUrl":"http://localhost:8000/umbraco/lib/angular-touch/angular-touch.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":102} -{"@t":"2018-11-12T08:39:18.9800216Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"f5b7506b-42d1-4b48-ad4d-4ae87c983ce6","RequestUrl":"http://localhost:8000/umbraco/lib/angular-sanitize/angular-sanitize.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":103} -{"@t":"2018-11-12T08:39:18.9810181Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"b71cf9d2-902c-48b3-900b-5fe154e1e21c","RequestUrl":"http://localhost:8000/umbraco/lib/angular-animate/angular-animate.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":104} -{"@t":"2018-11-12T08:39:18.9870020Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"ca1661b9-3eb0-4620-9132-4acfce37b62a","RequestUrl":"http://localhost:8000/umbraco/lib/angular-messages/angular-messages.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":105} -{"@t":"2018-11-12T08:39:18.9870020Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"7e69d36c-f469-4af3-9713-4de2afaab362","RequestUrl":"http://localhost:8000/umbraco/lib/angular-ui-sortable/sortable.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":106} -{"@t":"2018-11-12T08:39:18.9949813Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"977abc11-e4c5-4853-88e3-9092060188b3","RequestUrl":"http://localhost:8000/umbraco/lib/angular-dynamic-locale/tmhDynamicLocale.min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":107} -{"@t":"2018-11-12T08:39:18.9989715Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"674dcee6-79db-4ea9-9700-302ea34a4e6c","RequestUrl":"http://localhost:8000/umbraco/lib/ng-file-upload/ng-file-upload.min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":108} -{"@t":"2018-11-12T08:39:18.9999676Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"b038a3c4-fa83-428f-ab1d-d9bec8d908cb","RequestUrl":"http://localhost:8000/umbraco/lib/angular-local-storage/angular-local-storage.min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":109} -{"@t":"2018-11-12T08:39:19.0069579Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"4dcd04df-bf71-4364-a826-db893f53abec","RequestUrl":"http://localhost:8000/umbraco/lib/umbraco/Extensions.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":110} -{"@t":"2018-11-12T08:39:19.0069579Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"6624e7b2-5bd5-418a-834a-980757286362","RequestUrl":"http://localhost:8000/umbraco/lib/bootstrap/js/bootstrap.2.3.2.min.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":111} -{"@t":"2018-11-12T08:39:19.0109380Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"02f90e2a-7773-4cfd-97e5-aec5c84118ac","RequestUrl":"http://localhost:8000/umbraco/lib/umbraco/NamespaceManager.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":112} -{"@t":"2018-11-12T08:39:19.0159249Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"77008b8b-9967-4377-a263-88015235617c","RequestUrl":"http://localhost:8000/umbraco/lib/umbraco/LegacyUmbClientMgr.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":113} -{"@t":"2018-11-12T08:39:19.0159249Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"b68ac813-0f2f-44bd-9fda-d32fd18e7f3c","RequestUrl":"http://localhost:8000/umbraco/lib/umbraco/LegacySpeechBubble.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":114} -{"@t":"2018-11-12T08:39:19.0288903Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"4f749b6f-42e9-404d-a5d2-24e676d9c0fd","RequestUrl":"http://localhost:8000/umbraco/js/app.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":115} -{"@t":"2018-11-12T08:39:19.0298875Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"42e16ea8-bdde-4ee7-9f17-34786a6103a3","RequestUrl":"http://localhost:8000/umbraco/js/umbraco.resources.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":116} -{"@t":"2018-11-12T08:39:19.0308842Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"2a0d4e64-539b-43ce-90d5-0e813eaec095","RequestUrl":"http://localhost:8000/umbraco/js/umbraco.directives.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":117} -{"@t":"2018-11-12T08:39:19.0338769Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"d2987330-541c-4764-8e94-3fb83222c8d1","RequestUrl":"http://localhost:8000/umbraco/js/umbraco.filters.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":118} -{"@t":"2018-11-12T08:39:19.0378658Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"7c35b922-910a-439d-ba99-f46ae0224343","RequestUrl":"http://localhost:8000/umbraco/js/umbraco.services.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":119} -{"@t":"2018-11-12T08:39:19.0428527Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"c45dc39b-3f96-4fc1-b0cf-93bb04c7b722","RequestUrl":"http://localhost:8000/umbraco/js/umbraco.interceptors.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":120} -{"@t":"2018-11-12T08:39:19.0438500Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"8a7953bd-3d49-4e0f-9cba-993d6e432c3b","RequestUrl":"http://localhost:8000/umbraco/js/umbraco.controllers.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":121} -{"@t":"2018-11-12T08:39:19.0618024Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"e434d0c0-a2f6-4ced-94c6-317d4895d6c0","RequestUrl":"http://localhost:8000/umbraco/js/routes.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":122} -{"@t":"2018-11-12T08:39:19.0837430Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"211066a0-e8c1-4c33-b2e3-6c8e3c6ea488","RequestUrl":"http://localhost:8000/umbraco/js/init.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":123} -{"@t":"2018-11-12T08:39:19.0877368Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"11f817fa-0d16-4c98-a48d-097c0ac9c126","RequestUrl":"http://localhost:8000/App_Plugins/ModelsBuilder/modelsbuilder.controller.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":124} -{"@t":"2018-11-12T08:39:19.1036907Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"5869796d-30e0-4c0d-b185-2ef9d78fd281","RequestUrl":"http://localhost:8000/App_Plugins/ModelsBuilder/modelsbuilder.resource.js?cdv=1","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":125} -{"@t":"2018-11-12T08:39:19.1804849Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"8c7e32b1-7d5d-4eb8-87d9-142eea40c172","RequestUrl":"http://localhost:8000/umbraco/assets/fonts/lato/LatoLatin-Regular.woff","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":126} -{"@t":"2018-11-12T08:39:19.3939140Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"f8abc43d-f029-43f1-8279-39919c83e1f3","RequestUrl":"http://localhost:8000/umbraco/lib/angular-dynamic-locale/tmhDynamicLocale.min.js.map","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":127} -{"@t":"2018-11-12T08:39:19.3998995Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"bb68735d-ecb0-441d-bc5b-14d3bb3f2543","RequestUrl":"http://localhost:8000/umbraco/lib/angular-local-storage/angular-local-storage.min.js.map","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":128} -{"@t":"2018-11-12T08:39:19.5594716Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"8c6c79c0-5d60-49c8-952a-6afa6ed554a5","RequestUrl":"http://localhost:8000/umbraco/views/components/application/umb-app-header.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":129} -{"@t":"2018-11-12T08:39:19.5594716Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"2d726ed6-f0b2-4d68-820b-b53ab3eefba5","RequestUrl":"http://localhost:8000/umbraco/views/components/application/umb-navigation.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":130} -{"@t":"2018-11-12T08:39:19.5644587Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"e7cacfd4-cf4c-45ab-babe-fb2e0a28f691","RequestUrl":"http://localhost:8000/umbraco/views/components/editor/umb-editors.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":131} -{"@t":"2018-11-12T08:39:19.5654550Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"b94e3f94-a0a8-4e93-b357-094fbee46781","RequestUrl":"http://localhost:8000/umbraco/views/components/notifications/umb-notifications.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":132} -{"@t":"2018-11-12T08:39:19.5744314Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"379c4ac5-5f25-478b-83fc-293a684bada1","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/IsAuthenticated","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":133} -{"@t":"2018-11-12T08:39:19.5854042Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"379c4ac5-5f25-478b-83fc-293a684bada1","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/IsAuthenticated","Duration":8.9777,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":133} -{"@t":"2018-11-12T08:39:19.6463208Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"bc8878e1-96ef-498f-827a-ccedbe724d45","RequestUrl":"http://localhost:8000/umbraco/views/components/umb-avatar.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":134} -{"@t":"2018-11-12T08:39:19.6802317Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"53e2c17c-f4ad-492f-a202-5ddd2917406f","RequestUrl":"http://localhost:8000/umbraco/views/components/tree/umb-tree.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":135} -{"@t":"2018-11-12T08:39:19.6822250Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"4c88cfd5-5552-4bc5-843c-1f7964cbba76","RequestUrl":"http://localhost:8000/umbraco/views/components/application/umb-contextmenu.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":136} -{"@t":"2018-11-12T08:39:19.7011741Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"3c5bcff2-7487-4cba-a966-667505524a94","RequestUrl":"http://localhost:8000/umbraco/ServerVariables?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":137} -{"@t":"2018-11-12T08:39:19.7400697Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"45552a18-4951-467d-a04c-ac8b712fdc31","RequestUrl":"http://localhost:8000/umbraco/assets/img/application/logo.png","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":138} -{"@t":"2018-11-12T08:39:19.7510410Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"3c5bcff2-7487-4cba-a966-667505524a94","RequestUrl":"http://localhost:8000/umbraco/ServerVariables?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","Duration":49.8669,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":137} -{"@t":"2018-11-12T08:39:19.7879438Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"5e556b17-9de2-4e5a-92a6-32a4ccc8b147","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetCurrentUser","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":139} -{"@t":"2018-11-12T08:39:19.7899413Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"b355644f-9168-4a3c-a6be-29fd6c24a3ba","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetCurrentUser","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":140} -{"@t":"2018-11-12T08:39:19.7999106Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"ded13097-517f-4588-a9d9-758dcf032233","RequestUrl":"http://localhost:8000/favicon.ico","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":141} -{"@t":"2018-11-12T08:39:19.8527688Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"b355644f-9168-4a3c-a6be-29fd6c24a3ba","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetCurrentUser","Duration":61.8312,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":140} -{"@t":"2018-11-12T08:39:19.8617454Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"785c0164-da5c-4142-b85f-abc70e616071","RequestUrl":"http://localhost:8000/umbraco/lib/angular-i18n/angular-locale_en-US.js","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":142} -{"@t":"2018-11-12T08:39:19.8617454Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"5391b542-c0e4-40ea-8e68-4c90d896d0d8","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/UpdateCheck/GetCheck","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":143} -{"@t":"2018-11-12T08:39:19.8647369Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"dcd1fa67-95a7-42d5-b957-bafddd4add35","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Tour/GetTours","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":144} -{"@t":"2018-11-12T08:39:19.8777039Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"805c8a1b-5660-477f-b504-9b1b84239053","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Content/AllowsCultureVariation","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":145} -{"@t":"2018-11-12T08:39:19.8777039Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"bb22cf40-04c0-4e39-b320-4bc4d6fd11c9","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Section/GetSections","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":146} -{"@t":"2018-11-12T08:39:19.8787030Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"f632ab10-fe6b-4c25-aa7c-793e7a96eda5","RequestUrl":"http://localhost:8000/umbraco/views/components/application/umb-sections.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":147} -{"@t":"2018-11-12T08:39:19.8906682Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"f1fa8a51-fd1d-43b6-8484-ceeea7ee2860","RequestUrl":"http://localhost:8000/umbraco/assets/fonts/helveticons/helveticons.ttf","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":37,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":148} -{"@t":"2018-11-12T08:39:19.9185933Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"8cfe2e95-89dc-4d54-a7d6-ce6c0b9a10ee","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Section/GetSections","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":149} -{"@t":"2018-11-12T08:39:19.9455216Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"bb22cf40-04c0-4e39-b320-4bc4d6fd11c9","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Section/GetSections","Duration":66.8186,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":146} -{"@t":"2018-11-12T08:39:19.9485129Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"dcd1fa67-95a7-42d5-b957-bafddd4add35","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Tour/GetTours","Duration":82.7786,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":144} -{"@t":"2018-11-12T08:39:19.9594831Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"86fd9067-7c84-4cbf-9567-1312dc87341b","RequestUrl":"http://localhost:8000/umbraco/views/common/dashboard.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":150} -{"@t":"2018-11-12T08:39:19.9774356Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"805c8a1b-5660-477f-b504-9b1b84239053","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Content/AllowsCultureVariation","Duration":99.7317,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":145} -{"@t":"2018-11-12T08:39:19.9794303Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"9263cef7-1a74-498f-814b-1b1a05da259a","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/CurrentUser/GetUserTours","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":37,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":151} -{"@t":"2018-11-12T08:39:19.9914043Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"9740b246-0675-4235-a0d1-ee45e9b8545c","RequestUrl":"http://localhost:8000/umbraco/assets/img/loader.gif","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":152} -{"@t":"2018-11-12T08:39:19.9963857Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"9263cef7-1a74-498f-814b-1b1a05da259a","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/CurrentUser/GetUserTours","Duration":16.9554,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":37,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":151} -{"@t":"2018-11-12T08:39:20.0023700Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"5e43f2c1-ac86-4a7d-af5b-9ca09716fc24","RequestUrl":"http://localhost:8000/umbraco/views/components/umb-load-indicator.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":153} -{"@t":"2018-11-12T08:39:20.0043643Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"9d76010b-10d0-4052-929d-c8a7efc7c14c","RequestUrl":"http://localhost:8000/umbraco/LocalizedText","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":154} -{"@t":"2018-11-12T08:39:20.0063584Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"a2cc7d8d-9cdb-401b-9ffc-9b19aa153ef8","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Dashboard/GetDashboard?section=content","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":155} -{"@t":"2018-11-12T08:39:20.0143369Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"a2cc7d8d-9cdb-401b-9ffc-9b19aa153ef8","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Dashboard/GetDashboard?section=content","Duration":6.9774,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":155} -{"@t":"2018-11-12T08:39:20.0163316Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"9d76010b-10d0-4052-929d-c8a7efc7c14c","RequestUrl":"http://localhost:8000/umbraco/LocalizedText","Duration":11.9673,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":154} -{"@t":"2018-11-12T08:39:20.0282988Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"181a966b-d54a-4172-a8b9-2f6aae6059cc","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoTrees/ApplicationTree/GetApplicationTrees?application=content&tree=&isDialog=false","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":156} -{"@t":"2018-11-12T08:39:20.0472495Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"80381514-04bd-415e-a72b-d0df69a1db5e","RequestUrl":"http://localhost:8000/umbraco/views/components/tabs/umb-tabs-nav.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":157} -{"@t":"2018-11-12T08:39:20.0492442Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"af2cbaa8-587d-4891-b840-1566f4c9cb36","RequestUrl":"http://localhost:8000/umbraco/views/components/tabs/umb-tab-content.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":158} -{"@t":"2018-11-12T08:39:20.0502410Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"8cfe2e95-89dc-4d54-a7d6-ce6c0b9a10ee","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Section/GetSections","Duration":131.64770000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":149} -{"@t":"2018-11-12T08:39:20.0652008Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"5e556b17-9de2-4e5a-92a6-32a4ccc8b147","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetCurrentUser","Duration":276.2572,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":139} -{"@t":"2018-11-12T08:39:20.1080858Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"1502e814-50f3-4226-b95f-faab6a7f2811","RequestUrl":"http://localhost:8000/umbraco/views/dashboard/default/startupdashboardintro.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":159} -{"@t":"2018-11-12T08:39:20.1190590Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"3ac0e625-70af-4d03-b7ed-2673818cde37","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/BackOfficeAssets/GetSupportedMomentLocales","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":160} -{"@t":"2018-11-12T08:39:20.1300274Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"9a76f436-e828-4369-8635-a276c008ef29","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Dashboard/GetRemoteDashboardCss?section=content&umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":161} -{"@t":"2018-11-12T08:39:20.1340248Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"ff350a2a-d052-4d12-9c5e-7b9732bfae4e","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Dashboard/GetRemoteDashboardContent?section=content","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":162} -{"@t":"2018-11-12T08:39:20.1350146Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"fe0d4cbc-9651-408e-aada-72b5323cfb66","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/CurrentUser/GetUserTours","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":163} -{"@t":"2018-11-12T08:39:20.1400011Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"3ac0e625-70af-4d03-b7ed-2673818cde37","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/BackOfficeAssets/GetSupportedMomentLocales","Duration":19.9465,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":160} -{"@t":"2018-11-12T08:39:20.1509721Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"fe0d4cbc-9651-408e-aada-72b5323cfb66","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/CurrentUser/GetUserTours","Duration":15.957500000000001,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":163} -{"@t":"2018-11-12T08:39:20.1629404Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"5391b542-c0e4-40ea-8e68-4c90d896d0d8","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/UpdateCheck/GetCheck","Duration":301.195,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":143} -{"@t":"2018-11-12T08:39:20.2676590Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"181a966b-d54a-4172-a8b9-2f6aae6059cc","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoTrees/ApplicationTree/GetApplicationTrees?application=content&tree=&isDialog=false","Duration":239.36020000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":156} -{"@t":"2018-11-12T08:39:20.2786309Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"42077644-ed25-4b1e-867f-a6b4bc650599","RequestUrl":"http://localhost:8000/umbraco/views/components/tree/umb-tree-item.html?umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":164} -{"@t":"2018-11-12T08:39:20.2856114Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"8ec94766-22ec-4ab4-9dc2-1faedca078f7","RequestUrl":"http://localhost:8000/umbraco/assets/fonts/lato/LatoLatin-Bold.woff","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":165} -{"@t":"2018-11-12T08:39:20.3464487Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"9a76f436-e828-4369-8635-a276c008ef29","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Dashboard/GetRemoteDashboardCss?section=content&umb__rnd=708cf4cddc451d0bcd0581e9a01b49f7","Duration":216.4213,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":161} -{"@t":"2018-11-12T08:39:20.3933226Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"ff350a2a-d052-4d12-9c5e-7b9732bfae4e","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Dashboard/GetRemoteDashboardContent?section=content","Duration":259.2978,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":162} -{"@t":"2018-11-12T08:39:23.2018152Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ed67ead","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:23.2367219Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":34,"TimingId":"ed67ead","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:23.2367219Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":6,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:28.2513127Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b113ade","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:28.2862301Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":34,"TimingId":"b113ade","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:28.2862301Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:33.2958165Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"8a1e23c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:33.3366825Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":40,"TimingId":"8a1e23c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:33.3366825Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:38.3524102Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"4fbbb44","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":37,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:38.4480092Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":95,"TimingId":"4fbbb44","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":37,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:38.4480092Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":37,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:43.4496384Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"24a55ee","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:43.5304213Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":80,"TimingId":"24a55ee","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:43.5304213Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:48.5453412Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"dacc0f8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:48.5921815Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":47,"TimingId":"dacc0f8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:48.5921815Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:50.1300765Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"abefec3a-5c38-4899-b516-3a44d5a4ba37","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":166} -{"@t":"2018-11-12T08:39:50.1390909Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"abefec3a-5c38-4899-b516-3a44d5a4ba37","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":8.0204,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":166} -{"@t":"2018-11-12T08:39:53.5969438Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"47f343b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:53.6666142Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":69,"TimingId":"47f343b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:53.6676221Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:58.6682789Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"72ca08e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:58.7380549Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":70,"TimingId":"72ca08e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:39:58.7390543Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":9,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:03.7397336Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"3506f5d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:03.7985246Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":58,"TimingId":"3506f5d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:03.7985246Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:08.8082528Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"3f1703b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:08.8839275Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":75,"TimingId":"3f1703b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:08.8839275Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:13.8845933Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"259fcf4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:13.9294440Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":45,"TimingId":"259fcf4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:13.9304418Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:18.2159936Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"9d76e68","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:18.2229673Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":7,"TimingId":"9d76e68","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:18.2229673Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:18.3067451Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:18.4054875Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":28,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:18.9370544Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"19fb8dc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:18.9819354Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":44,"TimingId":"19fb8dc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:18.9819354Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:23.9825715Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5866b8e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:24.0882861Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":105,"TimingId":"5866b8e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:24.0882861Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:24.8821629Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"605bec0b-5272-4901-91e7-6218cd653edc","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":167} -{"@t":"2018-11-12T08:40:25.0347518Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"605bec0b-5272-4901-91e7-6218cd653edc","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":151.5918,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":167} -{"@t":"2018-11-12T08:40:29.0889380Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"3743a38","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:29.1218346Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":33,"TimingId":"3743a38","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:29.1218346Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:34.1365640Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"1321744","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:34.1982524Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":62,"TimingId":"1321744","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:34.1982524Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":27,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:39.2000173Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"efcb667","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:39.2687033Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":68,"TimingId":"efcb667","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:39.2687033Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:44.2693262Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"1367a26","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:44.3212038Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":51,"TimingId":"1367a26","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:44.3212038Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:49.3228889Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b4aee20","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":28,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:49.3986122Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":75,"TimingId":"b4aee20","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":28,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:49.3986122Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":28,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:54.3995122Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"8bf0cd0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:54.4354195Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":36,"TimingId":"8bf0cd0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:54.4363792Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:55.1564556Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"bab0eee0-5896-4aa1-a2bd-62ddb2309309","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":168} -{"@t":"2018-11-12T08:40:55.1624375Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"bab0eee0-5896-4aa1-a2bd-62ddb2309309","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":4.9844,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":168} -{"@t":"2018-11-12T08:40:59.4379755Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"cba0f9e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:59.5127036Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":75,"TimingId":"cba0f9e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:40:59.5127036Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:04.5134713Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"9e0ec3a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:04.5768092Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":63,"TimingId":"9e0ec3a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:04.5768092Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:09.5900537Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"f8c4871","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:09.6657149Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":75,"TimingId":"f8c4871","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:09.6657149Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:14.6676123Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"4aa3e77","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:14.7562355Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":89,"TimingId":"4aa3e77","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:14.7572333Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:18.2321373Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"b23a358","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:18.2322992Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"b23a358","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:18.2322992Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:18.4256270Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:18.5810079Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":24,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:19.7622388Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ebb8186","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:19.8011483Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":39,"TimingId":"ebb8186","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:19.8011483Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:24.8036513Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5aabd60","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:24.8594736Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":55,"TimingId":"5aabd60","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:24.8594736Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:29.8714293Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a8c0b61","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:29.8973556Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"4a28c479-9612-4296-a659-4eceb68bf586","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":24,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":169} -{"@t":"2018-11-12T08:41:29.9332575Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":61,"TimingId":"a8c0b61","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:29.9332575Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:30.0250125Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"4a28c479-9612-4296-a659-4eceb68bf586","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":126.6597,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":22,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":169} -{"@t":"2018-11-12T08:41:34.9463209Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b56c4c2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:34.9973282Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":50,"TimingId":"b56c4c2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:34.9973282Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:40.0104531Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6dc5c6f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:40.0493592Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":39,"TimingId":"6dc5c6f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:40.0503475Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:45.0522779Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c5fe1bb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:45.1250528Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":72,"TimingId":"c5fe1bb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:45.1250528Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:50.1357379Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e221f49","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:50.2036167Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":67,"TimingId":"e221f49","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:50.2036167Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:55.2054153Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b076c2a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:55.2804702Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":74,"TimingId":"b076c2a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:41:55.2804702Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:00.2948589Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"fca23f2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:00.3756538Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":81,"TimingId":"fca23f2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:00.3756538Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:01.2192197Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"327aaf7c-ca3e-448f-9b2f-b1e9219a3ffb","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":25,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":170} -{"@t":"2018-11-12T08:42:01.2232089Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"327aaf7c-ca3e-448f-9b2f-b1e9219a3ffb","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":2.9915000000000003,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":24,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":170} -{"@t":"2018-11-12T08:42:05.3890698Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"2dca930","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:05.4509002Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":62,"TimingId":"2dca930","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:05.4509002Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:10.4523098Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5799997","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:10.5061843Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":53,"TimingId":"5799997","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:10.5061843Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:15.5073021Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"7295026","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:15.5960212Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":88,"TimingId":"7295026","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:15.5960212Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:18.2338810Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"d5c8918","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":23,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:18.2338810Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"d5c8918","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":23,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:18.2338810Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":23,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:18.5316857Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":22,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:18.7540166Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":23,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:20.6068363Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"0c10a8b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:20.6696335Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":62,"TimingId":"0c10a8b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:20.6696335Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:25.6723576Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"450b3fa","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:25.7576247Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":85,"TimingId":"450b3fa","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:25.7576247Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:30.7666537Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"2508556","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:30.8390391Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":72,"TimingId":"2508556","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:30.8399924Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:33.2326932Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"b8ed4461-c28d-41bd-ab6b-cc10af8a2fa1","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":23,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":171} -{"@t":"2018-11-12T08:42:33.4004470Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"b8ed4461-c28d-41bd-ab6b-cc10af8a2fa1","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":166.75650000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":22,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":171} -{"@t":"2018-11-12T08:42:35.8558800Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"3a23491","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:35.9067410Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":50,"TimingId":"3a23491","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:35.9067410Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:40.9190487Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"24d758c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:40.9764305Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":57,"TimingId":"24d758c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:40.9764305Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:45.9776637Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a47b636","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:46.0542795Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":76,"TimingId":"a47b636","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:46.0542795Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:51.0681448Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"3726c8d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:51.1575322Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":89,"TimingId":"3726c8d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:51.1575322Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:56.1581734Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c6d5002","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:56.2520906Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":93,"TimingId":"c6d5002","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:42:56.2520906Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:01.2663872Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"2eb1c21","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:01.3335640Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":67,"TimingId":"2eb1c21","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:01.3335640Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:06.2192161Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"bd56ef59-bc6d-4463-9fba-1671c46e9c91","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":172} -{"@t":"2018-11-12T08:43:06.2262007Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"bd56ef59-bc6d-4463-9fba-1671c46e9c91","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":6.9846,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":22,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":172} -{"@t":"2018-11-12T08:43:06.3394781Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5b2d6e4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":11,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:06.4189988Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":79,"TimingId":"5b2d6e4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":11,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:06.4189988Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":11,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:11.4322582Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6353327","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:11.4940457Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":61,"TimingId":"6353327","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:11.4940457Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:16.4951588Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"3836b53","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:16.5745784Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":79,"TimingId":"3836b53","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:16.5745784Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:18.2356542Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"5e30c1a","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":22,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:18.2356542Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"5e30c1a","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":22,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:18.2356542Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":22,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:18.6293472Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":19,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:18.9123389Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":22,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:21.5900666Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"7fd52f1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:21.6810473Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":90,"TimingId":"7fd52f1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:21.6810473Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:26.6816874Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a323dad","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:26.7769533Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":95,"TimingId":"a323dad","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:26.7769533Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:31.7771891Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"59be7d5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:31.8385920Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":61,"TimingId":"59be7d5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:31.8385920Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:36.8401603Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5620402","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:36.9213397Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":81,"TimingId":"5620402","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:36.9213397Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":14,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:38.2419542Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"816df696-bbfd-4505-b6a8-d85eb7adcc7b","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":42,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":173} -{"@t":"2018-11-12T08:43:38.4416691Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"816df696-bbfd-4505-b6a8-d85eb7adcc7b","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":199.7149,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":12,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":173} -{"@t":"2018-11-12T08:43:41.9340053Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5ed0dd6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:41.9998352Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"5ed0dd6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:41.9998352Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:47.0025067Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"0a35314","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:47.0463900Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":43,"TimingId":"0a35314","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:47.0463900Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:52.0474101Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"4d5f612","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:52.1525713Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":105,"TimingId":"4d5f612","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:52.1535949Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:57.1556565Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b9d3106","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:57.2124686Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":57,"TimingId":"b9d3106","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:43:57.2124686Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:02.2141455Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b2adf1b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:02.2960416Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":82,"TimingId":"b2adf1b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:02.2960416Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:07.3080255Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"66e90b2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:07.3568892Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":49,"TimingId":"66e90b2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:07.3568892Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:10.2258830Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"f147294d-417f-446b-adb8-b3239b09f976","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":174} -{"@t":"2018-11-12T08:44:10.2328658Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"f147294d-417f-446b-adb8-b3239b09f976","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":6.9828,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":174} -{"@t":"2018-11-12T08:44:12.3707787Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c68305c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:12.4792198Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":109,"TimingId":"c68305c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:12.4792198Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:17.4814361Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"18844b4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:17.5612192Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":79,"TimingId":"18844b4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:17.5612192Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:18.2141381Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Keep alive executing","TimingId":"e03d9f0","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":42,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:18.2460539Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"568d1d8","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:18.2470646Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":1,"TimingId":"568d1d8","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:18.2480576Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:18.2540400Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"c8ba1bfa-8d26-4aa1-adfd-d91fac8b5691","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":12,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":175} -{"@t":"2018-11-12T08:44:18.7351982Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:19.1011624Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:20.4235503Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"c8ba1bfa-8d26-4aa1-adfd-d91fac8b5691","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","Duration":2168.5165,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":12,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":175} -{"@t":"2018-11-12T08:44:20.4275306Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Keep alive complete","Duration":2212,"TimingId":"e03d9f0","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":44,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:20.4275306Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[KeepAlive] ","TaskType":"Umbraco.Web.Scheduling.KeepAlive","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":44,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:22.5732073Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"9777d31","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:22.6695911Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":96,"TimingId":"9777d31","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:22.6695911Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:27.6725034Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"708d40b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:27.7484653Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":75,"TimingId":"708d40b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:27.7484653Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:32.7490897Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"49031cb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:32.8221930Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":73,"TimingId":"49031cb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:32.8221930Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:37.8233050Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"186c18d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:37.8893721Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"186c18d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:37.8893721Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:42.9028843Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"025a81e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:42.9663636Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":63,"TimingId":"025a81e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:42.9674180Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:43.2356843Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"874a29ce-55fb-492c-9810-e766d3bbdeda","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":40,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":176} -{"@t":"2018-11-12T08:44:43.4872369Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"874a29ce-55fb-492c-9810-e766d3bbdeda","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":249.55190000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":176} -{"@t":"2018-11-12T08:44:47.9717460Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"796ad0c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:48.0491456Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":77,"TimingId":"796ad0c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:48.0491456Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:53.0635286Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"43d7bcb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:53.1338036Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":70,"TimingId":"43d7bcb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:53.1338036Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:58.1349340Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e688151","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:58.2037075Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":68,"TimingId":"e688151","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:44:58.2037075Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:03.2047946Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"7029b0c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:03.2665523Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":61,"TimingId":"7029b0c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:03.2665523Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:08.2800845Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"afd580f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:08.3584862Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":78,"TimingId":"afd580f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:08.3594882Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:13.3607061Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6b4f6c6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:13.4177357Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":56,"TimingId":"6b4f6c6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:13.4177357Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:15.2269592Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"73aaee4f-aae1-41fd-b375-7f9ea92d6b1e","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":177} -{"@t":"2018-11-12T08:45:15.2349322Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"73aaee4f-aae1-41fd-b375-7f9ea92d6b1e","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":6.9295,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":51,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":177} -{"@t":"2018-11-12T08:45:18.2603001Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"9cdf943","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":12,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:18.2612622Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"9cdf943","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":12,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:18.2612622Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":12,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:18.4336521Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"1f4e799","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:18.5146694Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":80,"TimingId":"1f4e799","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:18.5146694Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:18.8256175Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":8,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:19.3061017Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":12,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:23.5176157Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"3a050dd","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:23.6325649Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":115,"TimingId":"3a050dd","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:23.6335613Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:28.6412300Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"cec8f1c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":12,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:28.7142864Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":73,"TimingId":"cec8f1c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":12,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:28.7142864Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":12,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:33.7152236Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"79fc3f8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":12,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:33.8111200Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":95,"TimingId":"79fc3f8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":12,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:33.8111200Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":12,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:38.8114685Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"401d15c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":12,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:38.8798164Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":68,"TimingId":"401d15c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":12,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:38.8798164Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":12,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:43.8814689Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"dcc2ff7","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:43.9914741Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":109,"TimingId":"dcc2ff7","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:43.9914741Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:47.2236660Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"80e323de-94c7-4ca8-b419-b502e49c005c","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":178} -{"@t":"2018-11-12T08:45:47.4076862Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"80e323de-94c7-4ca8-b419-b502e49c005c","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":183.02380000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":47,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":178} -{"@t":"2018-11-12T08:45:49.0035043Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"545d3fe","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:49.0839433Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":81,"TimingId":"545d3fe","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:49.0839433Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:54.0854593Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"78c773b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:54.1567520Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":71,"TimingId":"78c773b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:54.1567520Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":16,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:59.1572171Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"620f786","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":8,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:59.2309690Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":74,"TimingId":"620f786","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":8,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:45:59.2319674Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":8,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:04.2450558Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"4078de4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":56,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:04.3147837Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":69,"TimingId":"4078de4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":56,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:04.3147837Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":56,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:09.3241923Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"fdbe982","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":58,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:09.3999846Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":75,"TimingId":"fdbe982","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":58,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:09.3999846Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":58,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:14.4010922Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"59a0d69","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:14.4689083Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":67,"TimingId":"59a0d69","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:14.4689083Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:18.2619994Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"817c2b3","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:18.2629985Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"817c2b3","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:18.2639869Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:18.9108503Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":54,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:19.2186305Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"7c03ed97-8bfe-4b01-b7cf-7e4b433db23d","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":58,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":179} -{"@t":"2018-11-12T08:46:19.2246141Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"7c03ed97-8bfe-4b01-b7cf-7e4b433db23d","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":4.9895000000000005,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":179} -{"@t":"2018-11-12T08:46:19.4699671Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"08fdd3e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:19.4774616Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":7,"TimingId":"08fdd3e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:19.4774616Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:19.4954137Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:24.4794930Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a60db9e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:24.5333477Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":53,"TimingId":"a60db9e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:24.5333477Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:29.5422634Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"9f7db4b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":58,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:29.6091134Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":67,"TimingId":"9f7db4b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":58,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:29.6091134Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":58,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:34.6214896Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"0e77caf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":56,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:34.7057911Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":84,"TimingId":"0e77caf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":56,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:34.7057911Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":56,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:39.7138023Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e924699","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":55,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:39.7606574Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":47,"TimingId":"e924699","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":55,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:39.7616533Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":55,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:44.7632637Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d76c3d2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:44.8221025Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":58,"TimingId":"d76c3d2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:44.8221025Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:49.8240656Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a5cad16","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:49.9178409Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":94,"TimingId":"a5cad16","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:49.9178409Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:51.2212806Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"7a47a801-cede-4258-be96-c77ccbbf4424","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":56,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":180} -{"@t":"2018-11-12T08:46:51.3697071Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"7a47a801-cede-4258-be96-c77ccbbf4424","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":147.39350000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":180} -{"@t":"2018-11-12T08:46:54.9219734Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6408036","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:54.9708677Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":48,"TimingId":"6408036","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:54.9708677Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:46:59.9828884Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a5cc147","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:00.0706007Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":87,"TimingId":"a5cc147","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:00.0706007Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:05.0846392Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"81dc199","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:05.1775675Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":93,"TimingId":"81dc199","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:05.1785655Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:10.1885592Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"9fd28cf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:10.2437164Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":55,"TimingId":"9fd28cf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:10.2437164Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:15.2460984Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e2f2cef","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:15.3168802Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":70,"TimingId":"e2f2cef","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:15.3168802Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:18.2796545Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"e0b5152","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:18.2796545Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"e0b5152","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:18.2796545Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":10,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:19.0193601Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:19.6783167Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":48,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:20.3268546Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"0fe2374","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":54,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:20.4069876Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":80,"TimingId":"0fe2374","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":54,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:20.4069876Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":54,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:23.2239184Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"4f0368c0-d576-485f-97ef-7adab4dbc0de","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":181} -{"@t":"2018-11-12T08:47:23.2354072Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"4f0368c0-d576-485f-97ef-7adab4dbc0de","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":10.5083,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":54,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":181} -{"@t":"2018-11-12T08:47:25.4144570Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"4c3b8ac","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:25.4905633Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":76,"TimingId":"4c3b8ac","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:25.4915519Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:30.4950645Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"bd9eb15","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:30.5902308Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":94,"TimingId":"bd9eb15","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:30.5902308Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:35.5944901Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"9a5d863","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:35.6708218Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":76,"TimingId":"9a5d863","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:35.6708218Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:40.6711509Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e9e0570","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:40.7579003Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":86,"TimingId":"e9e0570","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:40.7579003Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:45.7591631Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c38e9e6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:45.8267580Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":67,"TimingId":"c38e9e6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:45.8267580Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:50.8266973Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"2ca58ed","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:50.8663505Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":39,"TimingId":"2ca58ed","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:50.8663505Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:55.2250403Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"e4ffa09e-89bf-4790-9f1a-450b20f72f2b","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":182} -{"@t":"2018-11-12T08:47:55.4018019Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"e4ffa09e-89bf-4790-9f1a-450b20f72f2b","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":175.7032,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":61,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":182} -{"@t":"2018-11-12T08:47:55.8706540Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"349b2bf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:55.9084805Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":37,"TimingId":"349b2bf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:47:55.9084805Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:00.9176751Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a92f47d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:01.0084310Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":90,"TimingId":"a92f47d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:01.0084310Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:06.0212826Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"0604666","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:06.0771260Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":55,"TimingId":"0604666","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:06.0771260Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:11.0779740Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e32b4aa","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:11.1532729Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":75,"TimingId":"e32b4aa","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:11.1532729Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:16.1544794Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d8fba60","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:16.1932364Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":38,"TimingId":"d8fba60","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:16.1932364Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:18.2927716Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"4b83bed","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":55,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:18.2938315Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":1,"TimingId":"4b83bed","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":55,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:18.2947843Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":55,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:19.0977126Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":48,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:19.8564006Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":54,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:21.2054807Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"8ee60dd","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:21.3231662Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":117,"TimingId":"8ee60dd","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:21.3231662Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:26.3273118Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"55ec233","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:26.3654481Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":38,"TimingId":"55ec233","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:26.3654481Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:28.2240228Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"47cd1199-b729-4f76-b08c-80e13f8127bf","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":183} -{"@t":"2018-11-12T08:48:28.2280069Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"47cd1199-b729-4f76-b08c-80e13f8127bf","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":3.9841,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":48,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":183} -{"@t":"2018-11-12T08:48:31.3774195Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"88acdd9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:31.4492466Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":71,"TimingId":"88acdd9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:31.4492466Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:36.4500595Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"cce888e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:36.5302558Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":79,"TimingId":"cce888e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:36.5302558Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:41.5508095Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"97c775d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:41.6450838Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":93,"TimingId":"97c775d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:41.6450838Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:46.6474900Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5edb756","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:46.7237252Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":76,"TimingId":"5edb756","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:46.7247231Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:51.7377184Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5ff50a9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:51.7922907Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":53,"TimingId":"5ff50a9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:51.7922907Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:56.7941856Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"39f1eeb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:56.9080418Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":113,"TimingId":"39f1eeb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:48:56.9080418Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:00.2277217Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"6bac05e9-6ba0-4d26-9a8e-0b0c27bc54e0","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":184} -{"@t":"2018-11-12T08:49:00.4632057Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"6bac05e9-6ba0-4d26-9a8e-0b0c27bc54e0","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":235.484,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":184} -{"@t":"2018-11-12T08:49:01.9093343Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"81276b6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:01.9683287Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":58,"TimingId":"81276b6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:01.9683287Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:06.9693350Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"363f976","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:07.0495275Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":79,"TimingId":"363f976","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:07.0495275Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:12.0593760Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"474d471","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:12.1387379Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":79,"TimingId":"474d471","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:12.1396897Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:17.1405111Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5bb01c8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:17.1978157Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":57,"TimingId":"5bb01c8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:17.1978157Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:18.2963560Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"40eed8b","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:18.2973029Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"40eed8b","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:18.2983028Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:19.2194903Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:20.0775699Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":68,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:20.4428890Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Keep alive executing","TimingId":"41e6426","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:20.4538611Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"8e92079d-98a0-4d03-a45a-a1136c07ac31","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":185} -{"@t":"2018-11-12T08:49:20.4692964Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"8e92079d-98a0-4d03-a45a-a1136c07ac31","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","Duration":14.378400000000001,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":185} -{"@t":"2018-11-12T08:49:20.4732656Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Keep alive complete","Duration":30,"TimingId":"41e6426","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":49,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:20.4742466Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[KeepAlive] ","TaskType":"Umbraco.Web.Scheduling.KeepAlive","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":49,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:22.2003162Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"617a37a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:22.2826329Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":82,"TimingId":"617a37a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:22.2836193Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:27.2844842Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"21ac31b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:27.3562900Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":72,"TimingId":"21ac31b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:27.3572884Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:32.2195568Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"24c18465-254d-4668-9024-df6380ee2f44","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":186} -{"@t":"2018-11-12T08:49:32.2285307Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"24c18465-254d-4668-9024-df6380ee2f44","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":7.9735000000000005,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":186} -{"@t":"2018-11-12T08:49:32.3617577Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5d6d3fb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":66,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:32.4406780Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":78,"TimingId":"5d6d3fb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":66,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:32.4406780Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":66,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:37.4479262Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"73a109b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:37.5550240Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":106,"TimingId":"73a109b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:37.5550240Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:42.5658755Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e1322a8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:42.6496490Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":84,"TimingId":"e1322a8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:42.6496490Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:47.6510499Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"9ad5525","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:47.7308358Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":79,"TimingId":"9ad5525","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:47.7308358Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:52.7330701Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"62abc49","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:52.7962727Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":63,"TimingId":"62abc49","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:52.7962727Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:57.7983386Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"591101d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:57.8721341Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":73,"TimingId":"591101d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:49:57.8721341Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:02.8720873Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"bf7faa5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:02.9099952Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":38,"TimingId":"bf7faa5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:02.9099952Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:04.2248108Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"c20bd228-2592-4c45-bea9-23b4b1555f03","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":72,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":187} -{"@t":"2018-11-12T08:50:04.4458507Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"c20bd228-2592-4c45-bea9-23b4b1555f03","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":219.9999,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":187} -{"@t":"2018-11-12T08:50:07.9190539Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"524f3d9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:07.9881735Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":70,"TimingId":"524f3d9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:07.9881735Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:13.0029101Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"877801a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:13.0647119Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":61,"TimingId":"877801a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:13.0647119Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:18.0673942Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"97aa0b1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:18.1777138Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":110,"TimingId":"97aa0b1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:18.1777138Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:18.3084003Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"e19357c","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:18.3084003Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"e19357c","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:18.3084003Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:19.3581410Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":84,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:20.7167692Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:23.1854529Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d57c512","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:23.2803821Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":95,"TimingId":"d57c512","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:23.2813788Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:28.2872461Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a7ddd96","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:28.4118392Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":124,"TimingId":"a7ddd96","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:28.4128705Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:33.4183748Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"af8a17e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":74,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:33.4733079Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":55,"TimingId":"af8a17e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":74,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:33.4733079Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":74,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:36.2270268Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"a9af04ac-9c9e-4be8-962f-ddc3ef07124e","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":188} -{"@t":"2018-11-12T08:50:36.2379923Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"a9af04ac-9c9e-4be8-962f-ddc3ef07124e","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":9.9583000000000013,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":188} -{"@t":"2018-11-12T08:50:38.4796984Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"8a4aeee","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:38.5215789Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":41,"TimingId":"8a4aeee","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:38.5215789Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:43.5294088Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d0855d0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:43.6377487Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":108,"TimingId":"d0855d0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:43.6377487Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:48.6526265Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c6b7b12","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":75,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:48.7477287Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":95,"TimingId":"c6b7b12","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":75,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:48.7487289Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":75,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:53.7528721Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"f54e563","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:53.8256721Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":72,"TimingId":"f54e563","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:53.8256721Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:58.8398682Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"9cead5f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":81,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:58.9201687Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":80,"TimingId":"9cead5f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":81,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:50:58.9201687Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":81,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:03.9213677Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"fa81641","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:04.0081341Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":86,"TimingId":"fa81641","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:04.0081341Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:08.2209720Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"7b5dc970-b689-4daa-95ac-bb8ea39d82c5","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":189} -{"@t":"2018-11-12T08:51:08.3895813Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"7b5dc970-b689-4daa-95ac-bb8ea39d82c5","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":167.60940000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":79,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":189} -{"@t":"2018-11-12T08:51:09.0152646Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"56c5087","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:09.0870693Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":72,"TimingId":"56c5087","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:09.0870693Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:14.0890610Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d7eb525","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:14.1542306Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":65,"TimingId":"d7eb525","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:14.1552271Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:18.3097478Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"0b59756","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":74,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:18.3097478Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"0b59756","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":74,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:18.3097478Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":74,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:19.1568426Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"2ffad7d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":76,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:19.2402540Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":83,"TimingId":"2ffad7d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":76,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:19.2402540Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":76,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:19.4467118Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:20.8878084Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:24.2463865Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"04fbf4c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:24.3328088Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":86,"TimingId":"04fbf4c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:24.3328088Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:29.3419380Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"04f306b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:29.4237465Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":81,"TimingId":"04f306b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:29.4237465Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:34.4246595Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ddfbff1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:34.5454261Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":121,"TimingId":"ddfbff1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:34.5454261Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:39.5608326Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"64adca7","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":76,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:39.6621618Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":101,"TimingId":"64adca7","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":76,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:39.6621618Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":76,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:41.2263000Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"2035f334-9b80-4c2a-a723-55a215704101","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":190} -{"@t":"2018-11-12T08:51:41.2362740Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"2035f334-9b80-4c2a-a723-55a215704101","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":8.9659000000000013,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":76,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":190} -{"@t":"2018-11-12T08:51:44.6672184Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6d14892","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:44.7553026Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":88,"TimingId":"6d14892","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:44.7553026Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:49.7667187Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e1528da","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":82,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:49.8364962Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":69,"TimingId":"e1528da","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":82,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:49.8364962Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":82,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:54.8373823Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"3a03851","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:54.9133350Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":75,"TimingId":"3a03851","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:54.9133350Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:59.9219102Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a2f78fe","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:59.9865851Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":64,"TimingId":"a2f78fe","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:51:59.9865851Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:04.9875103Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b65938e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:05.0658313Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":77,"TimingId":"b65938e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:05.0668306Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:10.0680207Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"29f4ad9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":82,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:10.1198956Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":51,"TimingId":"29f4ad9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":82,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:10.1198956Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":82,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:13.2260805Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"80ef415f-7961-41d0-b9e2-de362679abcc","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":191} -{"@t":"2018-11-12T08:52:13.4076449Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"80ef415f-7961-41d0-b9e2-de362679abcc","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":180.56220000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":82,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":191} -{"@t":"2018-11-12T08:52:15.1261954Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d4bd387","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:15.2089334Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":83,"TimingId":"d4bd387","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:15.2099446Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:18.3150606Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"019eadc","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:18.3150606Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"019eadc","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:18.3150606Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:19.5649575Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:20.2166627Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"819cae6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":82,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:20.2894190Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":72,"TimingId":"819cae6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":82,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:20.2894190Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":82,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:21.0760178Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:25.2920632Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"f36d37c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:25.3976747Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":105,"TimingId":"f36d37c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:25.3986719Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:30.4137509Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"87be5d5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:30.5174179Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":103,"TimingId":"87be5d5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:30.5174179Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:35.5269987Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"67dfc72","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:35.6117228Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":84,"TimingId":"67dfc72","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:35.6117228Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:40.6263389Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"f1178af","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:40.7036720Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":77,"TimingId":"f1178af","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:40.7036720Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:45.7062391Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"cd3f8b9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:45.7770610Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":70,"TimingId":"cd3f8b9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:45.7770610Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:46.2273863Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"b5e03353-a8b9-49e1-a9f0-055c74c2d825","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":86,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":192} -{"@t":"2018-11-12T08:52:46.2333709Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"b5e03353-a8b9-49e1-a9f0-055c74c2d825","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":4.9809,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":86,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":192} -{"@t":"2018-11-12T08:52:50.7766385Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"07b1059","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:50.8475145Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":70,"TimingId":"07b1059","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:50.8475145Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:55.8497333Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"7df3d3f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:55.9295182Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":79,"TimingId":"7df3d3f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:52:55.9295182Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:00.9413908Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"80eabb7","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:01.0102006Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":67,"TimingId":"80eabb7","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:01.0102006Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:06.0123926Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"3107a36","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:06.0819652Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":69,"TimingId":"3107a36","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:06.0819652Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:11.0894307Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"2106336","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:11.1641802Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":74,"TimingId":"2106336","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:11.1641802Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:16.1657720Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ef147cc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:16.2466170Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":80,"TimingId":"ef147cc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:16.2466170Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:18.2216488Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"31d8e937-8d77-4013-ba61-1cd8c6dd6f80","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":98,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":193} -{"@t":"2018-11-12T08:53:18.3263684Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"52ff92a","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:18.3263684Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"52ff92a","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:18.3263684Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:18.4186977Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"31d8e937-8d77-4013-ba61-1cd8c6dd6f80","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":197.0489,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":99,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":193} -{"@t":"2018-11-12T08:53:19.6641053Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":99,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:21.2510340Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"8507dc6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":92,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:21.2669087Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:21.2818743Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":30,"TimingId":"8507dc6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":92,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:21.2818743Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":92,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:26.2829539Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"dcc3f93","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:26.3994759Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":116,"TimingId":"dcc3f93","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:26.4004732Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:31.4022449Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5b4591b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:31.4868723Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":84,"TimingId":"5b4591b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:31.4868723Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:36.4960933Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"8020319","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:36.5832041Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":86,"TimingId":"8020319","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:36.5832041Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:41.5955368Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d79e348","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:41.6593613Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":63,"TimingId":"d79e348","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:41.6593613Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:46.6615047Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"8eb5eb4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:46.7446065Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":82,"TimingId":"8eb5eb4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:46.7446065Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:49.2327011Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"f304be6b-b1a1-49ca-8de3-2f953e67ef4f","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":100,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":194} -{"@t":"2018-11-12T08:53:49.2416463Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"f304be6b-b1a1-49ca-8de3-2f953e67ef4f","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":7.9452000000000007,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":194} -{"@t":"2018-11-12T08:53:51.7470244Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"35b9d14","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:51.8407786Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":93,"TimingId":"35b9d14","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:51.8407786Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:56.8416683Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"57d66e8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:56.9120976Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":70,"TimingId":"57d66e8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:53:56.9120976Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":90,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:01.9224922Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"f3ee118","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:02.0142444Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":92,"TimingId":"f3ee118","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:02.0142444Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:07.0259937Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"91fe00d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:07.1277278Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":101,"TimingId":"91fe00d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:07.1277278Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:12.1368940Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"4df7c64","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:12.1852733Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":48,"TimingId":"4df7c64","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:12.1852733Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:17.1891201Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"bef6ae0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:17.2475411Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":58,"TimingId":"bef6ae0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:17.2475411Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:18.3304707Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"124e19a","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":102,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:18.3304707Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"124e19a","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":102,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:18.3304707Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":102,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:19.7726494Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":106,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:20.4768668Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Keep alive executing","TimingId":"bf2f2a5","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":105,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:20.4857963Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"42eb7b61-693e-41e2-8cfb-8d015abedfd2","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":195} -{"@t":"2018-11-12T08:54:20.4908084Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"42eb7b61-693e-41e2-8cfb-8d015abedfd2","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","Duration":5.0121,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":195} -{"@t":"2018-11-12T08:54:20.4917763Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Keep alive complete","Duration":14,"TimingId":"bf2f2a5","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":85,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:20.4917763Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[KeepAlive] ","TaskType":"Umbraco.Web.Scheduling.KeepAlive","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":85,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:21.2181042Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"851c81c3-4497-43b0-ac5e-9dc7221546cf","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":196} -{"@t":"2018-11-12T08:54:21.3118582Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"851c81c3-4497-43b0-ac5e-9dc7221546cf","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":93.754,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":104,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":196} -{"@t":"2018-11-12T08:54:21.3378044Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:22.2493305Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a9160cb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":102,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:22.3211027Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":72,"TimingId":"a9160cb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":102,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:22.3211027Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":102,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:27.3229250Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c37ff62","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:27.4021435Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":78,"TimingId":"c37ff62","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:27.4021435Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:32.4037168Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"89c5729","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:32.4954893Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":92,"TimingId":"89c5729","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:32.4964776Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:37.4980489Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"18dfc25","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:37.5742304Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":76,"TimingId":"18dfc25","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:37.5742304Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:42.5896361Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"32d33fc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:42.6714272Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":81,"TimingId":"32d33fc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:42.6714272Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:47.6721710Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"f3476b3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:47.7220382Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":49,"TimingId":"f3476b3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:47.7220382Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:52.7296009Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"4fd621c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:52.8059582Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":76,"TimingId":"4fd621c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:52.8059582Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:54.2243727Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"6b73466a-f1d9-4e91-a357-12647a238706","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":102,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":197} -{"@t":"2018-11-12T08:54:54.2323402Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"6b73466a-f1d9-4e91-a357-12647a238706","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":6.9544000000000006,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":197} -{"@t":"2018-11-12T08:54:57.8099966Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"226fd61","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:57.8618160Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":51,"TimingId":"226fd61","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:54:57.8618160Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:02.8706812Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"0a645a8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:02.9604444Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":89,"TimingId":"0a645a8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:02.9604444Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:07.9753262Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"50662c1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:08.0494173Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":74,"TimingId":"50662c1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:08.0494173Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:13.0620596Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"dccd425","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:13.1617506Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":99,"TimingId":"dccd425","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:13.1617506Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:18.1679363Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"671c00e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":106,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:18.2763131Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":108,"TimingId":"671c00e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":106,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:18.2773049Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":106,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:18.3421307Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"a1f4d7a","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":105,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:18.3421307Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"a1f4d7a","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":105,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:18.3421307Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":105,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:19.8691382Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:21.4963900Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:23.2801944Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"954ae98","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:23.4355115Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":155,"TimingId":"954ae98","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:23.4365078Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:25.2353635Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"cf72485c-82c8-4140-8600-03895b9b6adf","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":198} -{"@t":"2018-11-12T08:55:25.4390291Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"cf72485c-82c8-4140-8600-03895b9b6adf","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":203.6656,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":96,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":198} -{"@t":"2018-11-12T08:55:28.4430821Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"68be015","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:28.5138094Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":70,"TimingId":"68be015","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:28.5138094Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:33.5150489Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"436b798","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:33.5967669Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":81,"TimingId":"436b798","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:33.5967669Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:38.6059594Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"88d21c1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:38.6547780Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":49,"TimingId":"88d21c1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:38.6547780Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:43.6670057Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6eb434d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:43.7497791Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":82,"TimingId":"6eb434d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:43.7507789Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:48.7519860Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"32fd630","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":96,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:48.8277524Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":76,"TimingId":"32fd630","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":96,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:48.8277524Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":96,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:53.8280454Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"fa761ec","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:53.8973027Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":69,"TimingId":"fa761ec","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:53.8973027Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:57.2197604Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"22e90599-76d9-4d22-9801-7bd6908d5fc6","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":199} -{"@t":"2018-11-12T08:55:57.2267438Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"22e90599-76d9-4d22-9801-7bd6908d5fc6","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":5.9860000000000007,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":199} -{"@t":"2018-11-12T08:55:58.9704325Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"8ba74eb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:59.0697205Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":99,"TimingId":"8ba74eb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:55:59.0697205Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:04.0783406Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e0c7e0b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":96,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:04.1526577Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":74,"TimingId":"e0c7e0b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":96,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:04.1526577Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":96,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:09.1666326Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"84802f3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":96,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:09.2413801Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":74,"TimingId":"84802f3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":96,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:09.2413801Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":96,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:14.2424363Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"16461ec","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:14.3082700Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"16461ec","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:14.3092680Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:18.3433612Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"4fbb1f0","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:18.3433612Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"4fbb1f0","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:18.3433612Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:19.3099967Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"87a9f33","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":104,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:19.3558819Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":45,"TimingId":"87a9f33","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":104,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:19.3558819Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":104,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:19.9452286Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":96,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:21.7370030Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:24.3705762Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ec63b87","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:24.4699585Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":99,"TimingId":"ec63b87","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:24.4709556Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:29.2210651Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"4f1d8135-732a-40ad-a45b-aaf99e11f4df","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":104,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":200} -{"@t":"2018-11-12T08:56:29.4264756Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"4f1d8135-732a-40ad-a45b-aaf99e11f4df","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":205.4105,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":200} -{"@t":"2018-11-12T08:56:29.4760878Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"eeb50bf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":119,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:29.5188606Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":43,"TimingId":"eeb50bf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":119,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:29.5198577Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":119,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:34.5305638Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e6ce1cb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":96,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:34.6682770Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":137,"TimingId":"e6ce1cb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":96,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:34.6682770Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":96,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:39.6687072Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"42dfee2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":113,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:39.7664460Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":98,"TimingId":"42dfee2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":113,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:39.7674451Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":113,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:44.7678910Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"2310b8f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:44.8757442Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":107,"TimingId":"2310b8f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:44.8757442Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:49.8878513Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"83f7af5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:49.9596571Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":71,"TimingId":"83f7af5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:49.9606533Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:54.9619537Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"f0974bc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:55.0153714Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":53,"TimingId":"f0974bc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:56:55.0153714Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:00.0158680Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"bde5972","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:00.0746693Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":59,"TimingId":"bde5972","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:00.0757049Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:01.2359881Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"d3ae02c6-d199-434a-bd99-d057368f64dc","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":121,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":201} -{"@t":"2018-11-12T08:57:01.2419679Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"d3ae02c6-d199-434a-bd99-d057368f64dc","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":4.9822000000000006,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":201} -{"@t":"2018-11-12T08:57:05.0765469Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"0fa996c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:05.1383846Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":62,"TimingId":"0fa996c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:05.1383846Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:10.1544932Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ae77d49","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":113,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:10.2251620Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":70,"TimingId":"ae77d49","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":113,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:10.2261596Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":113,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:15.2279603Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"8b3a342","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:15.2777571Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":49,"TimingId":"8b3a342","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:15.2807527Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:18.3564088Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"1f88a6f","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":122,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:18.3564088Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"1f88a6f","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":122,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:18.3564088Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":122,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:20.0314761Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:20.2822244Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"13e1fdd","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":121,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:20.3495889Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":67,"TimingId":"13e1fdd","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":121,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:20.3495889Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":121,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:21.9173522Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:25.3585010Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"3af112c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:25.4724393Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":113,"TimingId":"3af112c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:25.4724393Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:30.4843617Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"583b942","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:30.5342266Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":50,"TimingId":"583b942","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:30.5342266Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:34.2206698Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"a1af3b5a-3c2a-4e92-871e-ce88201bef35","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":113,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":202} -{"@t":"2018-11-12T08:57:34.4315179Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"a1af3b5a-3c2a-4e92-871e-ce88201bef35","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":210.84810000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":202} -{"@t":"2018-11-12T08:57:35.5433527Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6675cc1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:35.6112054Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":68,"TimingId":"6675cc1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:35.6112054Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:40.6257530Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c2a1065","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:40.6883611Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":62,"TimingId":"c2a1065","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:40.6883611Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:45.6890517Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"f8ea12f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:45.7439925Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":55,"TimingId":"f8ea12f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:45.7439925Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:50.7461512Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b7b91f5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:50.8105138Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":63,"TimingId":"b7b91f5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:50.8105138Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:55.8108913Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ee58aff","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:55.8777691Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":67,"TimingId":"ee58aff","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:57:55.8787663Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:00.8903615Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c14e45f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:00.9488863Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":58,"TimingId":"c14e45f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:00.9488863Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:05.9493641Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b113445","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:06.0411207Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":92,"TimingId":"b113445","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:06.0411207Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:06.2267438Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"a54c04e0-a8c2-499f-85d3-0ef5c6863daa","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":126,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":203} -{"@t":"2018-11-12T08:58:06.2317302Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"a54c04e0-a8c2-499f-85d3-0ef5c6863daa","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":3.9896000000000003,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":114,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":203} -{"@t":"2018-11-12T08:58:11.0573789Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"aa5c0d2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:11.1402398Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":82,"TimingId":"aa5c0d2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:11.1402398Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:16.1435361Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"9636332","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:16.2118782Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":68,"TimingId":"9636332","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:16.2128775Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:18.3614615Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"6f9bbba","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:18.3614615Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"6f9bbba","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:18.3614615Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:20.1784400Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:21.2145309Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ea4d2c9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":126,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:21.3009562Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":86,"TimingId":"ea4d2c9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":126,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:21.3009562Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":126,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:22.1293080Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":125,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:26.3133152Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"9706e93","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:26.4000815Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":86,"TimingId":"9706e93","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:26.4000815Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:31.4144399Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"fe5d568","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:31.5002120Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":85,"TimingId":"fe5d568","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:31.5012113Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:36.5122898Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"9fde0de","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:36.6151508Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":102,"TimingId":"9fde0de","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:36.6151508Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:38.2286682Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"66be5ef3-070e-4751-836a-f0f54d91ce36","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":204} -{"@t":"2018-11-12T08:58:38.4263893Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"66be5ef3-070e-4751-836a-f0f54d91ce36","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":197.7211,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":114,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":204} -{"@t":"2018-11-12T08:58:41.6281232Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"13f20db","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:41.6731147Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":45,"TimingId":"13f20db","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:41.6731147Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:46.6754268Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"eaf2a7c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:46.7942074Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":118,"TimingId":"eaf2a7c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:46.7942074Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:51.7966396Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"be907f5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:51.8769755Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":80,"TimingId":"be907f5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:51.8769755Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:56.8790830Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"72dfc57","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:56.9548814Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":75,"TimingId":"72dfc57","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:58:56.9548814Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:01.9560510Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d4cbae8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:01.9999242Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":44,"TimingId":"d4cbae8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:02.0009226Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:07.0109020Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b557c3e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:07.0956060Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":83,"TimingId":"b557c3e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:07.0956060Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:11.2163444Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"65cb423c-a32e-42af-8bc5-dab9a5f2cddb","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":205} -{"@t":"2018-11-12T08:59:11.2193333Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"65cb423c-a32e-42af-8bc5-dab9a5f2cddb","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":1.9889000000000001,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":114,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":205} -{"@t":"2018-11-12T08:59:12.1056038Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e7efe74","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:12.1794057Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":73,"TimingId":"e7efe74","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:12.1794057Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:17.1806398Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c16010a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:17.2236364Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":42,"TimingId":"c16010a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:17.2236364Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:18.3718434Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"38f208f","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":139,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:18.3728808Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":1,"TimingId":"38f208f","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":139,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:18.3738326Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":139,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:20.2756620Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:20.4963867Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Keep alive executing","TimingId":"0b665fb","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":139,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:20.5172806Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"9a2fa6cd-d878-4692-92bb-977eb856f031","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":206} -{"@t":"2018-11-12T08:59:20.5232687Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"9a2fa6cd-d878-4692-92bb-977eb856f031","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","Duration":5.9881,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":206} -{"@t":"2018-11-12T08:59:20.5262606Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Keep alive complete","Duration":29,"TimingId":"0b665fb","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":59,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:20.5262606Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[KeepAlive] ","TaskType":"Umbraco.Web.Scheduling.KeepAlive","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":59,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:22.2302255Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6ad12f3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":137,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:22.2481927Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":17,"TimingId":"6ad12f3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":137,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:22.2481927Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":137,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:22.2890736Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:27.2509478Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6a39270","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:27.3167686Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":65,"TimingId":"6a39270","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:27.3167686Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:32.3239937Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e4ae6b9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:32.3987969Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":74,"TimingId":"e4ae6b9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:32.3987969Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:37.4131434Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"25d0041","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:37.5300253Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":116,"TimingId":"25d0041","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:37.5300253Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:42.2309245Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"fa0d39ee-3674-4760-b29d-70f16046719e","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":207} -{"@t":"2018-11-12T08:59:42.4536305Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"fa0d39ee-3674-4760-b29d-70f16046719e","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":209.74550000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":138,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":207} -{"@t":"2018-11-12T08:59:42.5444406Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"fc54a28","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:42.5907681Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":46,"TimingId":"fc54a28","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:42.5907681Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:47.5924466Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"24d6390","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:47.6735738Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":81,"TimingId":"24d6390","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:47.6735738Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:52.6894148Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6dbb418","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:52.7591241Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":70,"TimingId":"6dbb418","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:52.7591241Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:57.7606168Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"553b7cb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:57.8313095Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":70,"TimingId":"553b7cb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T08:59:57.8313095Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:02.8424877Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"09c6795","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:02.9202699Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":77,"TimingId":"09c6795","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:02.9202699Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:07.9330078Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"2ec91c0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:08.0127847Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":79,"TimingId":"2ec91c0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:08.0127847Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:13.0285534Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e68ac90","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:13.0873907Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":58,"TimingId":"e68ac90","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:13.0873907Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:14.2207894Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"d6766634-46d0-4131-a211-a689d9be2b46","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":138,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":208} -{"@t":"2018-11-12T09:00:14.2267698Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"d6766634-46d0-4131-a211-a689d9be2b46","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":4.9865,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":137,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":208} -{"@t":"2018-11-12T09:00:18.0917095Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c3adcc6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:18.1525561Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":60,"TimingId":"c3adcc6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:18.1525561Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:18.3863877Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"436aa15","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":139,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:18.3863877Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"436aa15","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":139,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:18.3863877Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":139,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:20.3553069Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:22.4815804Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:23.1672996Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b40ba49","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":146,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:23.2321111Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":64,"TimingId":"b40ba49","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":146,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:23.2321111Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":146,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:28.2342760Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"fde1e1e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:28.3278582Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":93,"TimingId":"fde1e1e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:28.3278582Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:33.3286633Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"7e05ff6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:33.4379503Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":109,"TimingId":"7e05ff6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:33.4379503Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:38.4477942Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"00d7888","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:38.5167097Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":68,"TimingId":"00d7888","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:38.5167097Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:43.5294362Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"0b09ca4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:43.6072115Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":78,"TimingId":"0b09ca4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:43.6082122Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:46.2295060Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"7a0ce4bd-9851-437d-a2f3-afb692228367","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":209} -{"@t":"2018-11-12T09:00:46.4554698Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"7a0ce4bd-9851-437d-a2f3-afb692228367","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":224.9636,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":133,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":209} -{"@t":"2018-11-12T09:00:48.6132709Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"f90af7e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":133,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:48.6727580Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":59,"TimingId":"f90af7e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":133,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:48.6727580Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":133,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:53.6843656Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e0ee1a7","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:53.7476728Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":63,"TimingId":"e0ee1a7","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:53.7476728Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:58.7617290Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"987815b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":134,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:58.8405445Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":78,"TimingId":"987815b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":134,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:00:58.8405445Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":134,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:03.8554079Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"aa69ead","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":133,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:03.9201985Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":65,"TimingId":"aa69ead","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":133,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:03.9201985Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":133,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:08.9232158Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"94e3a93","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:09.0039579Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":81,"TimingId":"94e3a93","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:09.0049551Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:14.0152956Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"8ee143f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:14.0885756Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":73,"TimingId":"8ee143f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:14.0905934Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:18.2163922Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"961e7140-1a73-4c38-91f1-b78934da9eaf","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":146,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":210} -{"@t":"2018-11-12T09:01:18.2193852Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"961e7140-1a73-4c38-91f1-b78934da9eaf","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":2.9930000000000003,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":134,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":210} -{"@t":"2018-11-12T09:01:18.4027525Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"efcffea","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":133,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:18.4027525Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"efcffea","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":133,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:18.4027525Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":133,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:19.0902264Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e4686bf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":59,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:19.1727410Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":82,"TimingId":"e4686bf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":59,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:19.1727410Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":59,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:20.4737175Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:22.7435468Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:24.1840929Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5f54e60","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:24.3153754Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":131,"TimingId":"5f54e60","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:24.3153754Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:29.3279671Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5844ce8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":147,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:29.3916916Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":63,"TimingId":"5844ce8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":147,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:29.3916916Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":147,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:34.4064768Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"8618f93","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":146,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:34.4892462Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":83,"TimingId":"8618f93","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":146,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:34.4892462Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":146,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:39.5011720Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"f2faf48","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:39.6015251Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":99,"TimingId":"f2faf48","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:39.6015251Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:44.6050224Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"06eddc2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:44.6653570Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":59,"TimingId":"06eddc2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:44.6653570Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:49.6690655Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"441a272","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":144,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:49.7569997Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":88,"TimingId":"441a272","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":144,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:49.7569997Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":144,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:51.2262987Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"0fba5f05-3083-431c-be11-550443c3e9d8","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":211} -{"@t":"2018-11-12T09:01:51.4826000Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"0fba5f05-3083-431c-be11-550443c3e9d8","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":256.3013,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":146,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":211} -{"@t":"2018-11-12T09:01:54.7608772Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"691f7d5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:54.8364598Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":75,"TimingId":"691f7d5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:54.8364598Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:59.8409363Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"3023fa8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":126,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:59.9129833Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":71,"TimingId":"3023fa8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":126,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:01:59.9129833Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":126,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:04.9265257Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"217c145","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":128,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:04.9883590Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":62,"TimingId":"217c145","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":128,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:04.9883590Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":128,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:09.9894179Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c957481","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":126,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:10.0750896Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":85,"TimingId":"c957481","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":126,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:10.0750896Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":126,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:15.0765168Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"46a900f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:15.1172041Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":41,"TimingId":"46a900f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:15.1172041Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:18.4052820Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"ce99f98","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:18.4052820Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"ce99f98","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:18.4052820Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:20.1291317Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c461c88","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:20.1959083Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"c461c88","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:20.1969064Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:20.5489143Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:22.9011150Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:23.2248607Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"e45b9626-e469-4a34-a93b-002c8375d594","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":212} -{"@t":"2018-11-12T09:02:23.2328388Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"e45b9626-e469-4a34-a93b-002c8375d594","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":6.9695,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":118,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":212} -{"@t":"2018-11-12T09:02:25.2029999Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"13c2d73","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:25.2537817Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":50,"TimingId":"13c2d73","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:25.2537817Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:30.2539099Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"47e9381","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:30.3531510Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":99,"TimingId":"47e9381","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:30.3531510Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:35.3561768Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ca55908","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:35.4393948Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":82,"TimingId":"ca55908","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:35.4393948Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:40.4509619Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"2d4461b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:40.5438986Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":92,"TimingId":"2d4461b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:40.5438986Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:45.5463512Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"bf0339c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:45.6394585Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":93,"TimingId":"bf0339c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:45.6404563Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:50.6558895Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"796a1d4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:50.7441965Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":88,"TimingId":"796a1d4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:50.7441965Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:55.2218977Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"671afacb-43d4-4c83-8880-9ae4ef244282","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":213} -{"@t":"2018-11-12T09:02:55.4165941Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"671afacb-43d4-4c83-8880-9ae4ef244282","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":194.6964,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":118,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":213} -{"@t":"2018-11-12T09:02:55.7508167Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"0140a14","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":125,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:55.8118049Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":61,"TimingId":"0140a14","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":125,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:02:55.8118049Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":125,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:00.8129741Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"3054254","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:00.8856233Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":72,"TimingId":"3054254","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:00.8856233Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:05.8861304Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ffd94c1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:05.9839869Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":97,"TimingId":"ffd94c1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:05.9839869Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:10.9853565Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"1807183","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:11.0611261Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":75,"TimingId":"1807183","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:11.0611261Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:16.0625933Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"431880b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:16.1149153Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":52,"TimingId":"431880b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:16.1159129Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":116,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:18.4189821Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"4aea461","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:18.4189821Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"4aea461","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:18.4189821Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:20.6450199Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:21.1277357Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"834fa3f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":119,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:21.1855805Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":58,"TimingId":"834fa3f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":119,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:21.1855805Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":119,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:23.1169807Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:26.1884079Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"24fdb91","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:26.2816537Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":93,"TimingId":"24fdb91","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:26.2826507Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:27.2264618Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"7b7e5468-36bb-4905-9c93-5bb3c090618f","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":120,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":214} -{"@t":"2018-11-12T09:03:27.2334384Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"7b7e5468-36bb-4905-9c93-5bb3c090618f","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":6.9766,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":214} -{"@t":"2018-11-12T09:03:31.2952698Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"20b2cf3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:31.3591652Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":63,"TimingId":"20b2cf3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:31.3591652Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:36.3725146Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5694711","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:36.4263657Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":54,"TimingId":"5694711","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:36.4273631Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:41.4405918Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"229e8d8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:41.5492448Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":108,"TimingId":"229e8d8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:41.5492448Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:46.5516163Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"7af3888","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:46.6529793Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":101,"TimingId":"7af3888","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:46.6529793Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:51.6524405Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"cdd9f54","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:51.7537190Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":101,"TimingId":"cdd9f54","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:51.7547162Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:56.7557247Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"dea1210","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:56.8026036Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":47,"TimingId":"dea1210","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:03:56.8035973Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:00.2205493Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"1d24b56d-27c9-4f75-b7a6-7f04af6ab40d","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":215} -{"@t":"2018-11-12T09:04:00.4300031Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"1d24b56d-27c9-4f75-b7a6-7f04af6ab40d","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":209.4538,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":119,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":215} -{"@t":"2018-11-12T09:04:01.8177895Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b7c5135","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:01.8951867Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":77,"TimingId":"b7c5135","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:01.8951867Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:06.9084357Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"1730a08","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:07.0156263Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":108,"TimingId":"1730a08","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:07.0166280Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:12.0176286Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"0b38692","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:12.0953976Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":77,"TimingId":"0b38692","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:12.0953976Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:17.0975314Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d54603a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:17.1583977Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":60,"TimingId":"d54603a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:17.1583977Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":129,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:18.4212186Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"f9d3b5b","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":119,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:18.4212186Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"f9d3b5b","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":119,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:18.4212186Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":119,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:20.5272189Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Keep alive executing","TimingId":"638868d","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:20.5401235Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"b69d1b3b-b8f5-47b0-a15d-aa29a4bf5448","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":216} -{"@t":"2018-11-12T09:04:20.5500955Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"b69d1b3b-b8f5-47b0-a15d-aa29a4bf5448","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","Duration":8.9571,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":216} -{"@t":"2018-11-12T09:04:20.5520914Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Keep alive complete","Duration":24,"TimingId":"638868d","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":142,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:20.5520914Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[KeepAlive] ","TaskType":"Umbraco.Web.Scheduling.KeepAlive","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":142,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:20.8183340Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":113,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:22.1607686Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e6665b1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:22.2689723Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":107,"TimingId":"e6665b1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:22.2689723Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:23.4608476Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":120,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:27.2821707Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"1f122b4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:27.3409760Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":59,"TimingId":"1f122b4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:27.3419716Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:32.2200269Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"2529dffb-98da-4f97-ae59-149d132ef2f1","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":217} -{"@t":"2018-11-12T09:04:32.2250132Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"2529dffb-98da-4f97-ae59-149d132ef2f1","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":4.9863,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":217} -{"@t":"2018-11-12T09:04:32.3556604Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"093844c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":113,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:32.4184961Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":63,"TimingId":"093844c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":113,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:32.4184961Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":113,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:37.4200662Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6b2986b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:37.5018386Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":81,"TimingId":"6b2986b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:37.5018386Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:42.5167388Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"23cd9df","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:42.6015085Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":85,"TimingId":"23cd9df","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:42.6025045Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:47.6033507Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"7029b7b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:47.7446002Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":141,"TimingId":"7029b7b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:47.7455951Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:52.7463543Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5aaa953","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:52.8486803Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":102,"TimingId":"5aaa953","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:52.8495960Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:57.8517027Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"bfd6c4d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:57.9202211Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":68,"TimingId":"bfd6c4d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:04:57.9212403Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:02.9355211Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"bf55ed6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:03.0303477Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":94,"TimingId":"bf55ed6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:03.0303477Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:04.2273144Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"e0a3e454-8a90-4d99-bc63-0e918e36683e","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":111,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":218} -{"@t":"2018-11-12T09:05:04.4185630Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"e0a3e454-8a90-4d99-bc63-0e918e36683e","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":191.2486,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":218} -{"@t":"2018-11-12T09:05:08.0455183Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"08234b7","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:08.4193070Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":373,"TimingId":"08234b7","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:08.4193070Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:13.4202267Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"74ac50f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:13.5167767Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":96,"TimingId":"74ac50f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:13.5167767Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:18.4359177Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"ede2898","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:18.4359177Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"ede2898","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:18.4359177Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:18.5283647Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"97252a4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":119,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:18.6051081Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":76,"TimingId":"97252a4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":119,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:18.6051081Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":119,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:20.8924236Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:23.6076194Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"261e891","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":119,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:23.6295625Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":22,"TimingId":"261e891","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":119,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:23.6295625Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":119,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:23.7119024Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:28.6308188Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"0cffd72","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:28.7215463Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":90,"TimingId":"0cffd72","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:28.7215463Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:33.7217320Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"7eb4a26","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:33.8091701Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":87,"TimingId":"7eb4a26","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:33.8091701Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:36.2275049Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"aa50d2f9-1ccb-4246-b9eb-c945131641a6","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":219} -{"@t":"2018-11-12T09:05:36.2344930Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"aa50d2f9-1ccb-4246-b9eb-c945131641a6","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":5.9887000000000006,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":119,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":219} -{"@t":"2018-11-12T09:05:38.8118925Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"9af418a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:38.8916716Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":79,"TimingId":"9af418a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:38.8916716Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:43.9051291Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"aa6c06d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:44.1842661Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":279,"TimingId":"aa6c06d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:44.1842661Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:49.1852741Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c653516","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":111,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:49.2919218Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":106,"TimingId":"c653516","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":111,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:49.2919218Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":111,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:54.2931543Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5397ab1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:54.3330341Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":40,"TimingId":"5397ab1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:54.3340312Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:59.3391328Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"0697e4b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:59.4069102Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":68,"TimingId":"0697e4b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:05:59.4079091Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:04.4183383Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b1adc67","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":111,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:04.4986011Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":80,"TimingId":"b1adc67","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":111,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:04.5015899Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":111,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:08.2233292Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"9b0de306-f879-4af2-99d0-1ae0a05b1cbf","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":220} -{"@t":"2018-11-12T09:06:08.4286690Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"9b0de306-f879-4af2-99d0-1ae0a05b1cbf","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":205.3398,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":105,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":220} -{"@t":"2018-11-12T09:06:09.5126271Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"f180382","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":115,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:09.5525152Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":40,"TimingId":"f180382","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":115,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:09.5525152Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":115,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:14.5534896Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c5ea294","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:14.6223326Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":68,"TimingId":"c5ea294","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:14.6232747Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:18.4371331Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"3532562","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:18.4371331Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"3532562","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:18.4371331Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:19.6396488Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"95a9dea","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":93,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:19.6905090Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":50,"TimingId":"95a9dea","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":93,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:19.6905090Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":93,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:20.9975891Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:23.9077684Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:24.7031366Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"39b0f41","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":111,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:24.8123276Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":108,"TimingId":"39b0f41","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":111,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:24.8123276Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":111,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:29.8236476Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"613d5c3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":115,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:29.9034278Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":79,"TimingId":"613d5c3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":115,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:29.9034278Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":115,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:34.9171104Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"44f1261","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":111,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:35.0378252Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":120,"TimingId":"44f1261","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":111,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:35.0378252Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":111,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:40.0495810Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"bff8fb3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":115,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:40.1393347Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":89,"TimingId":"bff8fb3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":115,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:40.1403450Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":115,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:40.2261037Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"1ca34a02-6ebd-42e6-bc85-1a586c34169b","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":221} -{"@t":"2018-11-12T09:06:40.2330877Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"1ca34a02-6ebd-42e6-bc85-1a586c34169b","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":5.9441000000000006,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":105,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":221} -{"@t":"2018-11-12T09:06:45.1427294Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"934d3aa","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:45.2075181Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":64,"TimingId":"934d3aa","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:45.2075181Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:50.2204722Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6eb0d3e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":107,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:50.2811251Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":61,"TimingId":"6eb0d3e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":107,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:50.2811251Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":107,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:55.2831457Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"eeeb934","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:55.3489719Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"eeeb934","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:06:55.3489719Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":127,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:00.3548866Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5463341","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:00.4085825Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":53,"TimingId":"5463341","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:00.4085825Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:05.4182499Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"708477b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:05.4760126Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":57,"TimingId":"708477b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:05.4760126Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:10.4861661Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"520ea0c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":106,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:10.5902914Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":103,"TimingId":"520ea0c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":106,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:10.5902914Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":106,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:12.2250173Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"4c171b7c-fd19-46b8-ada4-15036499c66c","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":222} -{"@t":"2018-11-12T09:07:12.3981422Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"4c171b7c-fd19-46b8-ada4-15036499c66c","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":172.1276,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":115,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":222} -{"@t":"2018-11-12T09:07:15.5931443Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e1da2a3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:15.6688996Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":75,"TimingId":"e1da2a3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:15.6688996Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:18.4478747Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"85bde26","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:18.4478747Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"85bde26","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:18.4478747Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:20.6714549Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e5e3cc9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:20.7672002Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":96,"TimingId":"e5e3cc9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:20.7672002Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:21.1029759Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":102,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:24.1045268Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:25.7772588Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"7db6eeb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:25.8639889Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":86,"TimingId":"7db6eeb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:25.8639889Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:30.8752911Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"1b8db5b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:30.9992701Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":123,"TimingId":"1b8db5b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:30.9992701Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:35.9994712Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"13a6ac9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:36.0822604Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":82,"TimingId":"13a6ac9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:36.0822604Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:41.0832547Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c926b95","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:41.1510234Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":67,"TimingId":"c926b95","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:41.1510234Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:44.2238063Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"e656863a-e9b5-4ef3-b59e-67010ddb8afa","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":223} -{"@t":"2018-11-12T09:07:44.2277950Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"e656863a-e9b5-4ef3-b59e-67010ddb8afa","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":3.9887,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":99,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":223} -{"@t":"2018-11-12T09:07:46.1533612Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"dcd8212","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:46.2431216Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":89,"TimingId":"dcd8212","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:46.2431216Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:51.2447088Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"42eebe3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:51.3632485Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":118,"TimingId":"42eebe3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:51.3632485Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:56.3644176Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a56022b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:56.4564083Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":92,"TimingId":"a56022b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:07:56.4564083Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:01.4635361Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"2edc380","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:01.5573137Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":93,"TimingId":"2edc380","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:01.5573137Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:06.5595487Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d7fa24c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:06.6761053Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":116,"TimingId":"d7fa24c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:06.6761053Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:11.6874624Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"80b1417","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:11.7543661Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"80b1417","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:11.7543661Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:16.7557165Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d7f9bc5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:16.8285038Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":72,"TimingId":"d7f9bc5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:16.8285038Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:17.2261536Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"204a3ad7-c718-474f-93dc-2cb411fc2be2","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":102,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":224} -{"@t":"2018-11-12T09:08:17.4021957Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"204a3ad7-c718-474f-93dc-2cb411fc2be2","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":176.0421,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":99,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":224} -{"@t":"2018-11-12T09:08:18.4515600Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"9a46635","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:18.4525564Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"9a46635","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:18.4525564Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":123,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:21.1925872Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:21.8412454Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"903faee","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":100,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:21.9290010Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":87,"TimingId":"903faee","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":100,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:21.9290010Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":100,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:24.2925862Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:26.9326143Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"47b3ed9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:27.0323586Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":100,"TimingId":"47b3ed9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:27.0343624Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:32.0483052Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a64b559","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:32.1010701Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":52,"TimingId":"a64b559","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:32.1010701Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:37.1142549Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"f23459c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:37.2491365Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":135,"TimingId":"f23459c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:37.2491365Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:42.2497612Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"1d53abb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:42.3550188Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":105,"TimingId":"1d53abb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:42.3550188Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:47.3566730Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"af11266","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:47.4416820Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":85,"TimingId":"af11266","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:47.4416820Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:49.2243134Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"bd4e1035-1134-4e11-8cda-a40258f3d49f","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":225} -{"@t":"2018-11-12T09:08:49.2302813Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"bd4e1035-1134-4e11-8cda-a40258f3d49f","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":5.9679,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":97,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":225} -{"@t":"2018-11-12T09:08:52.4532373Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"7b0b692","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:52.4950983Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":42,"TimingId":"7b0b692","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:52.4960986Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:57.4967735Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b00900e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:57.7629618Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":266,"TimingId":"b00900e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:08:57.7629618Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:02.7626588Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"cf6aed0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:02.8323614Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":69,"TimingId":"cf6aed0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:02.8323614Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:07.8399584Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"1684ad0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:07.9067177Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"1684ad0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:07.9067177Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:12.9209382Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ae83e77","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:12.9972664Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":76,"TimingId":"ae83e77","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:12.9972664Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:18.0000703Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"575c7b8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:18.0725994Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":72,"TimingId":"575c7b8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:18.0725994Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:18.4641850Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"b46a05f","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":94,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:18.4641850Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"b46a05f","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":94,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:18.4641850Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":94,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:20.5575033Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Keep alive executing","TimingId":"381fd6f","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:20.5654761Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"b3b18a59-1502-43fa-b2b2-83050ccb2d0c","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":226} -{"@t":"2018-11-12T09:09:20.5714746Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"b3b18a59-1502-43fa-b2b2-83050ccb2d0c","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","Duration":5.9985,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":226} -{"@t":"2018-11-12T09:09:20.5764945Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Keep alive complete","Duration":18,"TimingId":"381fd6f","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":108,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:20.5764945Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[KeepAlive] ","TaskType":"Umbraco.Web.Scheduling.KeepAlive","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":108,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:21.2310482Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"b0f4aea8-8a47-49cc-bee4-dbfd61ae0497","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":95,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":227} -{"@t":"2018-11-12T09:09:21.3005224Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"b0f4aea8-8a47-49cc-bee4-dbfd61ae0497","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":68.489,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":101,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":227} -{"@t":"2018-11-12T09:09:21.3364428Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":100,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:23.0793159Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"930053b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:23.2186531Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":139,"TimingId":"930053b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:23.2186531Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:24.5534549Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":100,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:28.2295730Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"cf6ee76","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:28.2884146Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":58,"TimingId":"cf6ee76","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:28.2884146Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:33.2991970Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"055a8d8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:33.3849353Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":85,"TimingId":"055a8d8","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:33.3849353Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:38.3969676Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"dfd03e5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:38.4539649Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":57,"TimingId":"dfd03e5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:38.4539649Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:43.4662404Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"843dea0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:43.5380563Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":71,"TimingId":"843dea0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:43.5380563Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:48.5489429Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"8c8ce49","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":99,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:48.6107784Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":61,"TimingId":"8c8ce49","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":99,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:48.6107784Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":99,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:53.2302896Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"0b269ea1-e66e-46f1-a469-b561649d15ab","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":228} -{"@t":"2018-11-12T09:09:53.2352718Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"0b269ea1-e66e-46f1-a469-b561649d15ab","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":3.9843,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":95,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":228} -{"@t":"2018-11-12T09:09:53.6127185Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c808954","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:53.7202909Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":107,"TimingId":"c808954","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:53.7202909Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:58.7355804Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"fdfb977","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":95,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:58.8006867Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":65,"TimingId":"fdfb977","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":95,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:09:58.8016873Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":95,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:03.8122213Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"82bb2e9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":99,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:03.8680673Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":56,"TimingId":"82bb2e9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":99,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:03.8680673Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":99,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:08.8808815Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"345ee4b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:08.9472240Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"345ee4b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:08.9492185Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:13.9517272Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"61b20ee","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:14.0326276Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":80,"TimingId":"61b20ee","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:14.0326276Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:18.4679546Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"43b25ef","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:18.4679546Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"43b25ef","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:18.4679546Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:19.0454797Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6a9a9dd","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":87,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:19.1213890Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":75,"TimingId":"6a9a9dd","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":87,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:19.1213890Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":87,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:21.4295489Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:24.1243770Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"61d23ab","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:24.1711995Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":46,"TimingId":"61d23ab","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:24.1711995Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:24.7256826Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":95,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:25.2279335Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"6f7c7bc6-8890-479f-89e5-5fd80bd358c3","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":100,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":229} -{"@t":"2018-11-12T09:10:25.4138153Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"6f7c7bc6-8890-479f-89e5-5fd80bd358c3","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":184.88160000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":229} -{"@t":"2018-11-12T09:10:29.1800455Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"bad96b5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:29.2797933Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":99,"TimingId":"bad96b5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:29.2797933Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:34.2803541Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"53cebee","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":100,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:34.3441628Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":63,"TimingId":"53cebee","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":100,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:34.3441628Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":100,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:39.3558468Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ea4eeaf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:39.4307690Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":75,"TimingId":"ea4eeaf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:39.4317673Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:44.4340789Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"498b27d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:44.5158517Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":80,"TimingId":"498b27d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:44.5158517Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:49.5260092Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"39bffc1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:49.6286023Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":102,"TimingId":"39bffc1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:49.6315987Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:54.6421861Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"7b50abd","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:54.7249780Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":83,"TimingId":"7b50abd","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:54.7259533Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:58.2311703Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"30f635a0-107f-40c0-96fd-7aea69e0fbec","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":103,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":230} -{"@t":"2018-11-12T09:10:58.2361555Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"30f635a0-107f-40c0-96fd-7aea69e0fbec","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":3.9895,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":99,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":230} -{"@t":"2018-11-12T09:10:59.7323205Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"abb3c21","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":84,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:59.8061934Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":73,"TimingId":"abb3c21","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":84,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:10:59.8061934Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":84,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:04.8077886Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c7f7ccd","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":88,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:04.8625516Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":54,"TimingId":"c7f7ccd","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":88,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:04.8625516Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":88,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:09.8711472Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5281a33","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":98,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:09.9718246Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":100,"TimingId":"5281a33","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":98,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:09.9718246Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":98,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:14.9732674Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c7075f1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:15.0660380Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":93,"TimingId":"c7075f1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:15.0670340Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:18.4723915Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"756ec53","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":88,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:18.4723915Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"756ec53","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":88,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:18.4723915Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":88,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:20.0729366Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e6f55da","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":80,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:20.1385661Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"e6f55da","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":80,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:20.1385661Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":80,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:21.5293036Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:24.8829099Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:25.1538633Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6383ced","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":87,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:25.2337244Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":80,"TimingId":"6383ced","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":87,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:25.2337244Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":87,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:30.2232256Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"978d2b36-2a95-4aa5-9e72-43c8f2d72195","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":87,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":231} -{"@t":"2018-11-12T09:11:30.2451673Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a0077aa","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:30.2790757Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"978d2b36-2a95-4aa5-9e72-43c8f2d72195","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":55.850100000000005,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":88,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":231} -{"@t":"2018-11-12T09:11:30.3260195Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":81,"TimingId":"a0077aa","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:30.3260195Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:35.3390505Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"fb9e0fc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":88,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:35.4053854Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"fb9e0fc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":88,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:35.4053854Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":88,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:40.4171110Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b9450ba","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":88,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:40.4749042Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":58,"TimingId":"b9450ba","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":88,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:40.4749042Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":88,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:45.4779773Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"bddff0c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:45.5555632Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":77,"TimingId":"bddff0c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:45.5555632Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:50.5724989Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c705acf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:50.6922236Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":119,"TimingId":"c705acf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:50.6922236Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:55.6956409Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"862e089","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:55.8384851Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":142,"TimingId":"862e089","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:11:55.8384851Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:00.8395307Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b3b2e8f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:00.9528100Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":113,"TimingId":"b3b2e8f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:00.9528100Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:02.2284993Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"ebb5762f-be7b-45e8-b090-2cc46f5a8050","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":87,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":232} -{"@t":"2018-11-12T09:12:02.2324913Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"ebb5762f-be7b-45e8-b090-2cc46f5a8050","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":3.992,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":80,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":232} -{"@t":"2018-11-12T09:12:05.9660361Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a5d8c2d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:06.0490150Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":83,"TimingId":"a5d8c2d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:06.0500091Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:11.0506584Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e48bf67","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":88,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:11.1306198Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":80,"TimingId":"e48bf67","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":88,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:11.1306198Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":88,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:16.1337997Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6e8df33","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:16.1925079Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":58,"TimingId":"6e8df33","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:16.1925079Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:18.4786798Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"f8eb27b","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:18.4786798Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"f8eb27b","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:18.4796783Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":91,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:21.1930942Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a179d34","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:21.3194419Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":126,"TimingId":"a179d34","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:21.3194419Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:21.6086625Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":85,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:25.0581109Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:26.3237387Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"989db5f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":85,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:26.4090752Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":85,"TimingId":"989db5f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":85,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:26.4090752Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":85,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:31.4098163Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"07d4e15","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:31.4917124Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":81,"TimingId":"07d4e15","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:31.4917124Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:35.2341729Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"5da5d4c5-3148-4b49-9dd0-e84c0dced323","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":79,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":233} -{"@t":"2018-11-12T09:12:35.4835316Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"5da5d4c5-3148-4b49-9dd0-e84c0dced323","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":248.3579,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":233} -{"@t":"2018-11-12T09:12:36.5085629Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"2e54a96","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:36.5574290Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":49,"TimingId":"2e54a96","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:36.5574290Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:41.5588489Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d8a29bb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:41.6266344Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":67,"TimingId":"d8a29bb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:41.6266344Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:46.6277163Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"4c8b9fc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:46.6887232Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":61,"TimingId":"4c8b9fc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:46.6887232Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:51.6987725Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"1c13f1b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:51.7682999Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":69,"TimingId":"1c13f1b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:51.7682999Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:56.7704838Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ebf76f3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:56.8463071Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":75,"TimingId":"ebf76f3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:12:56.8473048Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:01.8609052Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"966e7c3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:01.9434369Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":82,"TimingId":"966e7c3","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:01.9444350Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:06.9565052Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"213093c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:07.0480172Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":91,"TimingId":"213093c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:07.0490201Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:07.2286819Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"78e8683d-eeaa-402a-8027-3a568a5da49d","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":85,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":234} -{"@t":"2018-11-12T09:13:07.2326711Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"78e8683d-eeaa-402a-8027-3a568a5da49d","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":3.9892000000000003,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":84,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":234} -{"@t":"2018-11-12T09:13:12.0622794Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"0e82acf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:12.1211193Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":59,"TimingId":"0e82acf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:12.1211193Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:17.1225467Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5ad16ba","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:17.2073227Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":84,"TimingId":"5ad16ba","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:17.2073227Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:18.4834577Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"5e441f8","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":79,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:18.4834577Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"5e441f8","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":79,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:18.4834577Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":79,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:21.7164734Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:22.2157624Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5833bac","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":85,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:22.2795445Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":64,"TimingId":"5833bac","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":85,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:22.2805530Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":85,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:25.2185296Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:27.2922351Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"7a6326a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:27.3434348Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":51,"TimingId":"7a6326a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:27.3444305Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:32.3568586Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"000df40","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:32.4356823Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":79,"TimingId":"000df40","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:32.4356823Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:37.4481116Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"949081d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:37.5149023Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"949081d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:37.5149023Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:39.2301985Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"31c8f195-8a04-477f-a21f-19c92c0f6cef","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":68,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":235} -{"@t":"2018-11-12T09:13:39.4567349Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"31c8f195-8a04-477f-a21f-19c92c0f6cef","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":226.53640000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":84,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":235} -{"@t":"2018-11-12T09:13:42.5307545Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d05113b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:42.5835742Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":52,"TimingId":"d05113b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:42.5835742Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:47.5863555Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"f4107dc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:47.6707142Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":84,"TimingId":"f4107dc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:47.6707142Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:52.6723949Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6af7b30","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:52.7392126Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"6af7b30","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:52.7392126Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:57.7401422Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"de1a351","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:57.8239910Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":83,"TimingId":"de1a351","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:13:57.8239910Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:02.8246653Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"03f5bfe","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:02.8881436Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":62,"TimingId":"03f5bfe","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:02.8881436Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:07.9018286Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"f8f590d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:08.0278869Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":125,"TimingId":"f8f590d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:08.0278869Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:11.2257746Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"47539fd8-606a-4c3b-acab-b62d42783b0f","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":236} -{"@t":"2018-11-12T09:14:11.2297627Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"47539fd8-606a-4c3b-acab-b62d42783b0f","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":2.9885,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":82,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":236} -{"@t":"2018-11-12T09:14:13.0281889Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"214f4c6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:13.1303644Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":102,"TimingId":"214f4c6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:13.1313630Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:18.1319917Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"591ba6f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:18.2164626Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":84,"TimingId":"591ba6f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:18.2164626Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:18.4860800Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"85534ee","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":82,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:18.4860800Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"85534ee","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":82,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:18.4860800Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":82,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:20.5769522Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Keep alive executing","TimingId":"0b60a5d","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":72,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:20.5927987Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"b152b1a3-f9cd-492c-afd6-1544031613a6","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":237} -{"@t":"2018-11-12T09:14:20.5967790Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"b152b1a3-f9cd-492c-afd6-1544031613a6","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","Duration":3.9803,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":237} -{"@t":"2018-11-12T09:14:20.5987742Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Keep alive complete","Duration":21,"TimingId":"0b60a5d","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":66,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:20.5987742Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[KeepAlive] ","TaskType":"Umbraco.Web.Scheduling.KeepAlive","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":66,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:21.7865730Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:23.2187099Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c653e5c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":82,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:23.3084576Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":89,"TimingId":"c653e5c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":82,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:23.3084576Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":82,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:25.3686558Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:28.3098072Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e8ef556","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:28.3641892Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":54,"TimingId":"e8ef556","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:28.3641892Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:33.3772034Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5a987f1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:33.4322252Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":55,"TimingId":"5a987f1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:33.4322252Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:38.4490156Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"45035bc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:38.5287704Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":80,"TimingId":"45035bc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:38.5287704Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:43.2195879Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"52e47926-3da4-45e9-ab80-2c9d965e2a65","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":238} -{"@t":"2018-11-12T09:14:43.4363284Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"52e47926-3da4-45e9-ab80-2c9d965e2a65","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":216.7405,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":84,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":238} -{"@t":"2018-11-12T09:14:43.5303817Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"aed43d1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:43.5871833Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":57,"TimingId":"aed43d1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:43.5871833Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:48.5902408Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d2d22ce","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":84,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:48.6626763Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":72,"TimingId":"d2d22ce","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":84,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:48.6626763Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":84,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:53.6729000Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5a69208","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:53.7156931Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":42,"TimingId":"5a69208","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:53.7156931Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:58.7167080Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ed24b59","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:58.7797415Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":62,"TimingId":"ed24b59","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:14:58.7797415Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":78,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:03.7813241Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a52c22b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:03.8696754Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":87,"TimingId":"a52c22b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:03.8696754Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:08.8705046Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e41fefd","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:08.9444135Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":73,"TimingId":"e41fefd","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:08.9444135Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:13.9543548Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"2468c17","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:14.0181762Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":64,"TimingId":"2468c17","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:14.0181762Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:16.2330376Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"51fb41e4-bfe2-414f-be49-93c73e60a9c4","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":239} -{"@t":"2018-11-12T09:15:16.2390128Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"51fb41e4-bfe2-414f-be49-93c73e60a9c4","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":5.9752,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":68,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":239} -{"@t":"2018-11-12T09:15:18.4959170Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"0e6dfcd","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:18.4969636Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"0e6dfcd","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:18.4969636Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:19.0315308Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"0eec633","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:19.1063294Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":74,"TimingId":"0eec633","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:19.1063294Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:21.8745848Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:24.1070193Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e6e4971","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:24.2104245Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":103,"TimingId":"e6e4971","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:24.2104245Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:25.5534027Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:29.2239894Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a341634","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:29.3164090Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":92,"TimingId":"a341634","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:29.3164090Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:34.3228129Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d0f2fc9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":62,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:34.3874484Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":64,"TimingId":"d0f2fc9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":62,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:34.3874484Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":62,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:39.4028488Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b6b8fff","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:39.4703689Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":67,"TimingId":"b6b8fff","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:39.4703689Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:44.4805014Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"9f59c2d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:44.5408013Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":60,"TimingId":"9f59c2d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:44.5408013Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:49.2207094Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"9481df12-85d8-4f89-8780-3a040e8c0bad","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":240} -{"@t":"2018-11-12T09:15:49.4144111Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"9481df12-85d8-4f89-8780-3a040e8c0bad","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":193.70170000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":240} -{"@t":"2018-11-12T09:15:49.5433534Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6f7f62b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":57,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:49.5902271Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":46,"TimingId":"6f7f62b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":57,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:49.5902271Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":57,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:54.6050203Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"1bf256e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:54.7165050Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":111,"TimingId":"1bf256e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:54.7165050Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:59.7290738Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d46d218","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":62,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:59.9502958Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":221,"TimingId":"d46d218","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":62,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:15:59.9512675Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":62,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:04.9656428Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5ebaac4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":58,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:05.0454813Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":80,"TimingId":"5ebaac4","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":58,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:05.0464790Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":58,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:10.0594387Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"421b0fc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:10.1239817Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":65,"TimingId":"421b0fc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:10.1239817Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:15.1266339Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"8c9c195","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:15.2004713Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":74,"TimingId":"8c9c195","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:15.2004713Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:18.4984899Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"7267d91","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:18.4984899Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"7267d91","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:18.4984899Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:20.2027340Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"435ba48","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:20.2745425Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":71,"TimingId":"435ba48","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:20.2745425Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:21.9648555Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:22.2174515Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"2ffe6cb7-b350-4fc4-bf03-f4edada7455e","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":241} -{"@t":"2018-11-12T09:16:22.2194460Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"2ffe6cb7-b350-4fc4-bf03-f4edada7455e","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":1.9945000000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":64,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":241} -{"@t":"2018-11-12T09:16:25.2903904Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b8e0ce0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:25.3627514Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":71,"TimingId":"b8e0ce0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:25.3627514Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:25.7105838Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":64,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:30.3716588Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d19d74b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":64,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:30.4654573Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":93,"TimingId":"d19d74b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":64,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:30.4654573Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":64,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:35.4657211Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"22be072","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:35.5589219Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":92,"TimingId":"22be072","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:35.5589219Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":65,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:40.5592442Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e901ada","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":44,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:40.6575771Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":98,"TimingId":"e901ada","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":44,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:40.6575771Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":44,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:45.6597790Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"292cda9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:45.7116339Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":51,"TimingId":"292cda9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:45.7116339Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:50.7204127Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"497e9da","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":60,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:50.7867111Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"497e9da","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":60,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:50.7867111Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":60,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:55.2345826Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"2818a3d9-077f-437b-8090-65d7cf1c2744","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":242} -{"@t":"2018-11-12T09:16:55.4501574Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"2818a3d9-077f-437b-8090-65d7cf1c2744","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":215.5748,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":48,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":242} -{"@t":"2018-11-12T09:16:55.7993531Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e77e47e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:55.8655791Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":65,"TimingId":"e77e47e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:16:55.8655791Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:00.8762210Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"3bb03db","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:00.9329846Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":56,"TimingId":"3bb03db","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:00.9329846Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:05.9334172Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"0ba4d01","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:05.9919624Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":58,"TimingId":"0ba4d01","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:05.9919624Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:11.0064774Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6e933ac","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":51,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:11.1031647Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":96,"TimingId":"6e933ac","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":51,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:11.1031647Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":51,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:16.1054087Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e35636c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:16.1753916Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":69,"TimingId":"e35636c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:16.1753916Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:18.5115687Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"60313d8","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":51,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:18.5115687Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"60313d8","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":51,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:18.5115687Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":51,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:21.1848258Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c3027b2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:21.2746398Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":90,"TimingId":"c3027b2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:21.2746398Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:22.0427003Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":56,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:25.8934665Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:26.2775164Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"58d2fa1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":56,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:26.3323734Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":54,"TimingId":"58d2fa1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":56,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:26.3323734Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":56,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:28.2273720Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"d34fb5aa-8f61-4f49-b79b-f4b6df949207","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":243} -{"@t":"2018-11-12T09:17:28.2325173Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"d34fb5aa-8f61-4f49-b79b-f4b6df949207","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":4.4782,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":243} -{"@t":"2018-11-12T09:17:31.3431351Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6866d7d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:31.4290257Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":85,"TimingId":"6866d7d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:31.4290257Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:36.4296843Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"01f803d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:36.4844873Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":54,"TimingId":"01f803d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:36.4844873Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:41.4851692Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"44e2d85","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:41.5818596Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":96,"TimingId":"44e2d85","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:41.5818596Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:46.5844836Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"20658a6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:46.6702526Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":85,"TimingId":"20658a6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:46.6702526Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:51.6838806Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"0a3b893","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:51.7267398Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":43,"TimingId":"0a3b893","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:51.7267398Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:56.7285251Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"7188efd","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:56.7931883Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":64,"TimingId":"7188efd","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:17:56.7931883Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:01.8087830Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b6e2a25","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:01.8855733Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":76,"TimingId":"b6e2a25","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:01.8855733Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:02.2236713Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"a18dc76e-06ba-4385-b133-6167b33d6e5d","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":244} -{"@t":"2018-11-12T09:18:02.3632954Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"a18dc76e-06ba-4385-b133-6167b33d6e5d","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":138.6206,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":51,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":244} -{"@t":"2018-11-12T09:18:06.8872113Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b459d5e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:06.9550171Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":67,"TimingId":"b459d5e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:06.9550171Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:11.9637799Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ad5e563","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:12.0364361Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":72,"TimingId":"ad5e563","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:12.0364361Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:17.0391043Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e138f24","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:17.1278228Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":88,"TimingId":"e138f24","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:17.1278228Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:18.5161527Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"4ba6303","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:18.5161527Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"4ba6303","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:18.5161527Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:22.1294471Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:22.1394458Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"64fe31a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":56,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:22.1743259Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":35,"TimingId":"64fe31a","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":56,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:22.1743259Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":56,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:26.0679155Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:27.1839664Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ae8b82c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":56,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:27.2238299Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":39,"TimingId":"ae8b82c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":56,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:27.2238299Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":56,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:32.2334411Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"46c9e35","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:32.3162104Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":82,"TimingId":"46c9e35","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:32.3162104Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:34.2211206Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"0b5412f3-6936-489b-b9a0-ea348a514871","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":245} -{"@t":"2018-11-12T09:18:34.2251070Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"0b5412f3-6936-489b-b9a0-ea348a514871","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":2.9881,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":53,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":245} -{"@t":"2018-11-12T09:18:37.3259770Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a8cead2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:37.3996194Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":73,"TimingId":"a8cead2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:37.3996194Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":69,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:42.4152232Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"744ce31","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:42.4810433Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":65,"TimingId":"744ce31","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:42.4810433Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:47.4826657Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"9424121","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:47.5654414Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":82,"TimingId":"9424121","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:47.5654414Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:52.5662220Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e81c243","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:52.6169348Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":51,"TimingId":"e81c243","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:52.6169348Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:57.6187295Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"19fc0b2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:57.6784006Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":59,"TimingId":"19fc0b2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:18:57.6784006Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:02.6920074Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"54bfddc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:02.7667992Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":74,"TimingId":"54bfddc","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:02.7667992Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:07.2228869Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"e17fd926-4fbc-4725-94c3-6098696c594a","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":246} -{"@t":"2018-11-12T09:19:07.3994097Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"e17fd926-4fbc-4725-94c3-6098696c594a","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":175.52720000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":43,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":246} -{"@t":"2018-11-12T09:19:07.7764765Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"d0dd6ef","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:07.8502039Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":73,"TimingId":"d0dd6ef","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:07.8502039Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:12.8638412Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"487b45f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:12.9595518Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":95,"TimingId":"487b45f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:12.9595518Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:17.9612313Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5fd419c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:18.0299877Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":68,"TimingId":"5fd419c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:18.0299877Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:18.5266667Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"600a146","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":8,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:18.5266667Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"600a146","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":8,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:18.5266667Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":8,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:20.6090909Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Keep alive executing","TimingId":"77806c8","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":13,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:20.6180724Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"ded929b4-8b7a-47c1-85b9-9b2ca84e4a2d","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":247} -{"@t":"2018-11-12T09:19:20.6250763Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"ded929b4-8b7a-47c1-85b9-9b2ca84e4a2d","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","Duration":7.0039000000000007,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":247} -{"@t":"2018-11-12T09:19:20.6260489Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Keep alive complete","Duration":17,"TimingId":"77806c8","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":104,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:20.6260489Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[KeepAlive] ","TaskType":"Umbraco.Web.Scheduling.KeepAlive","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":104,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:22.2317522Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:23.0317570Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"c93a131","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":43,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:23.1004296Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":68,"TimingId":"c93a131","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":43,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:23.1004296Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":43,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:26.2141180Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:28.1120963Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"56ed3fe","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:28.1918552Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":79,"TimingId":"56ed3fe","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:28.1918552Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:33.1984312Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ce94462","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:33.2632585Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":64,"TimingId":"ce94462","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:33.2642551Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:38.2758619Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"f490e5d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:38.3406840Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":64,"TimingId":"f490e5d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:38.3406840Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:41.2219809Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"49ecf103-6dc7-4fa0-9672-a81c6bc36a39","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":40,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":248} -{"@t":"2018-11-12T09:19:41.2299622Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"49ecf103-6dc7-4fa0-9672-a81c6bc36a39","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":6.9768,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":46,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":248} -{"@t":"2018-11-12T09:19:43.3453466Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"e340aec","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:43.4121244Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"e340aec","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:43.4131212Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:48.4137561Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"76e6c66","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:48.4815736Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":68,"TimingId":"76e6c66","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:48.4815736Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:53.4833370Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"43675d6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:53.5490348Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":65,"TimingId":"43675d6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:53.5490348Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:58.5616230Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ade7a7b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":46,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:58.6354209Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":74,"TimingId":"ade7a7b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":46,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:19:58.6354209Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":46,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:03.6362795Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"fff674b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":46,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:03.6899076Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":53,"TimingId":"fff674b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":46,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:03.6899076Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":46,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:08.6905431Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"44febae","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:08.7643392Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":73,"TimingId":"44febae","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:08.7643392Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:13.2244167Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"2b916335-35c9-4ca2-9b94-8f2b84ab208f","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":249} -{"@t":"2018-11-12T09:20:13.3750161Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"2b916335-35c9-4ca2-9b94-8f2b84ab208f","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":149.5932,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":45,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":249} -{"@t":"2018-11-12T09:20:13.7760693Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"df73f68","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:13.8427616Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"df73f68","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:13.8427616Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:18.5423961Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"a5da4bd","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:18.5423961Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"a5da4bd","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:18.5423961Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":31,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:18.8554955Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"08b31bb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":45,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:18.9301586Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":74,"TimingId":"08b31bb","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":45,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:18.9301586Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":45,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:22.3240865Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:23.9428979Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5aa6ea2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:24.0165594Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":73,"TimingId":"5aa6ea2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:24.0165594Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:26.3383511Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:29.0261980Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"1d92203","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:29.0620709Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":35,"TimingId":"1d92203","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:29.0620709Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:34.0628380Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"30d3924","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:34.1295239Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"30d3924","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:34.1295239Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:39.1381745Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"be4f8aa","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:39.1879955Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":49,"TimingId":"be4f8aa","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:39.1879955Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:44.1986051Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ceea4b7","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:44.2753953Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":76,"TimingId":"ceea4b7","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:44.2753953Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:47.2195272Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"6c32d6dd-b50a-4fa5-bf85-08c5a248b79a","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":250} -{"@t":"2018-11-12T09:20:47.2235132Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"6c32d6dd-b50a-4fa5-bf85-08c5a248b79a","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":2.9877000000000002,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":250} -{"@t":"2018-11-12T09:20:49.2771469Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"95046bf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:49.3548143Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":76,"TimingId":"95046bf","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:49.3548143Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:54.3544853Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"00f8b85","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:54.3893637Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":35,"TimingId":"00f8b85","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:54.3893637Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:59.4019826Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a99ebd0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":63,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:59.4358678Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":33,"TimingId":"a99ebd0","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":63,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:20:59.4358678Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":63,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:04.4484629Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"96d6b82","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":48,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:04.5402154Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":91,"TimingId":"96d6b82","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":48,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:04.5402154Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":48,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:09.5535031Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"68c8aac","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:09.6022163Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":48,"TimingId":"68c8aac","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:09.6022163Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:14.6153853Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"9ac4060","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:14.6871931Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":71,"TimingId":"9ac4060","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:14.6871931Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:18.5479557Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"6ec3ec8","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:18.5479557Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"6ec3ec8","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:18.5479557Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:19.2241462Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"64db50e3-4260-40ca-bed8-d3a51a4157cb","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":251} -{"@t":"2018-11-12T09:21:19.3847124Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"64db50e3-4260-40ca-bed8-d3a51a4157cb","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":159.5624,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":48,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":251} -{"@t":"2018-11-12T09:21:19.6978772Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"90bcdee","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":57,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:19.7676888Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":70,"TimingId":"90bcdee","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":57,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:19.7676888Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":57,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:22.4235891Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:24.7773413Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"1286b61","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:24.8590779Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":81,"TimingId":"1286b61","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:24.8590779Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:26.4667786Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:29.8708262Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a440c2f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:29.9424870Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":71,"TimingId":"a440c2f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:29.9434868Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:34.9552487Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"eee2e67","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":57,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:35.0268925Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":71,"TimingId":"eee2e67","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":57,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:35.0268925Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":57,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:40.0306629Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"2c8a479","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:40.1272539Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":96,"TimingId":"2c8a479","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:40.1272539Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:45.1398543Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"5e29e96","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:45.2076727Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":67,"TimingId":"5e29e96","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:45.2076727Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:50.2192734Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"8d14c3e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":58,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:50.2691411Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":49,"TimingId":"8d14c3e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":58,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:50.2691411Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":58,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:51.2235876Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"5f1869e7-a660-4145-85a7-4205e3790159","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":252} -{"@t":"2018-11-12T09:21:51.2315691Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"5f1869e7-a660-4145-85a7-4205e3790159","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":6.9312000000000005,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":50,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":252} -{"@t":"2018-11-12T09:21:55.2797832Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ecd7387","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:55.3236262Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":43,"TimingId":"ecd7387","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:21:55.3236262Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:00.3293478Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6f216d6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:00.3621532Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":32,"TimingId":"6f216d6","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:00.3621532Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:05.3639312Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"2821c58","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:05.4266129Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":63,"TimingId":"2821c58","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:05.4276100Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:10.4362559Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"65fea57","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":62,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:10.4930654Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":56,"TimingId":"65fea57","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":62,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:10.4930654Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":62,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:15.4938978Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"7348572","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:15.5626686Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":68,"TimingId":"7348572","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:15.5626686Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:18.5506835Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"e1ebf08","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:18.5506835Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"e1ebf08","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:18.5506835Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:20.5634173Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"68e0748","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":72,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:20.6371022Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":73,"TimingId":"68e0748","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":72,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:20.6371022Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":72,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:22.2288480Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"5fab8b8c-e0dc-4097-9953-3690019400d1","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":253} -{"@t":"2018-11-12T09:22:22.3874218Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"5fab8b8c-e0dc-4097-9953-3690019400d1","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":158.5738,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":253} -{"@t":"2018-11-12T09:22:22.4771851Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:25.6514496Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b4955a2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:25.6943435Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":42,"TimingId":"b4955a2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:25.6943435Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:26.6174489Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:30.7038126Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"1ec865c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":62,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:30.7764888Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":72,"TimingId":"1ec865c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":62,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:30.7764888Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":62,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:35.7774395Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b18fb97","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":62,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:35.8411552Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":63,"TimingId":"b18fb97","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":62,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:35.8411552Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":62,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:40.8565524Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ac70150","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:40.9190813Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":73,"TimingId":"ac70150","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:40.9190813Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:45.9319603Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"f1d07d1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:46.0098302Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":82,"TimingId":"f1d07d1","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:46.0098302Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:51.0207400Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"df8133d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":73,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:51.0875388Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"df8133d","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":73,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:51.0875388Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":73,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:55.2171584Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"ceb5b934-51d5-4389-bea6-b64c9d24e878","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":254} -{"@t":"2018-11-12T09:22:55.2191539Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"ceb5b934-51d5-4389-bea6-b64c9d24e878","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":1.9955,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":71,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":254} -{"@t":"2018-11-12T09:22:56.0889922Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"3cb2c99","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:56.1746183Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":85,"TimingId":"3cb2c99","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:22:56.1746183Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":17,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:01.1850970Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"9c758fe","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:01.2589107Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":73,"TimingId":"9c758fe","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:01.2589107Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:06.2725726Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"684f4e9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:06.3243527Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":52,"TimingId":"684f4e9","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:06.3243527Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:11.3257179Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"86ce17c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:11.3702180Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":51,"TimingId":"86ce17c","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:11.3702180Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:16.3839185Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"ae59c4f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:16.4692637Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":98,"TimingId":"ae59c4f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:16.4692637Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:18.5516577Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"76f703a","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:18.5516577Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"76f703a","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:18.5516577Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:21.4865579Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"9aa9f1b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:21.5538277Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":80,"TimingId":"9aa9f1b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:21.5538277Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:22.5651589Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":72,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:26.5687851Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"153f963","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:26.6000283Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":43,"TimingId":"153f963","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:26.6000283Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:26.7776739Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":72,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:28.2288188Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"d73da838-06d4-4318-9077-71e09632b43e","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":255} -{"@t":"2018-11-12T09:23:28.3834019Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"d73da838-06d4-4318-9077-71e09632b43e","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":153.5856,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":255} -{"@t":"2018-11-12T09:23:31.6009933Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"fd0733b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:31.6536878Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"fd0733b","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:31.6536878Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:36.6541428Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"888ee80","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:36.7163956Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":73,"TimingId":"888ee80","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:36.7163956Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:41.7320661Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"f0bf6f2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:41.7929865Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":60,"TimingId":"f0bf6f2","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:41.7929865Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:46.7950007Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"6a5296f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:46.8418766Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":47,"TimingId":"6a5296f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:46.8418766Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:51.8527184Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"11c4f20","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:51.9149970Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":66,"TimingId":"11c4f20","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:51.9149970Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:56.9316351Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"59a29f5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:56.9785300Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":53,"TimingId":"59a29f5","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:23:56.9785300Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":67,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:00.2230318Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"d487e362-4a2f-4256-87f7-84e26f37991d","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":66,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":256} -{"@t":"2018-11-12T09:24:00.2320087Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"d487e362-4a2f-4256-87f7-84e26f37991d","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","Duration":7.9779,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":256} -{"@t":"2018-11-12T09:24:01.9896344Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"7f7352f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:02.0405050Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":50,"TimingId":"7f7352f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:02.0405050Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:07.0415529Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"b6c6588","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:07.1004561Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":72,"TimingId":"b6c6588","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:07.1004561Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:12.1155752Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"a387c0e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:12.1949596Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":79,"TimingId":"a387c0e","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:12.1959573Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:17.1972614Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"cfa4524","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:17.2749925Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":77,"TimingId":"cfa4524","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:17.2749925Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":70,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:18.5613436Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Scheduled tasks executing","TimingId":"4fc90ac","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:18.5613436Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Scheduled tasks complete","Duration":0,"TimingId":"4fc90ac","SourceContext":"Umbraco.Web.Scheduling.ScheduledTasks","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:18.5613436Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledTasks] ","TaskType":"Umbraco.Web.Scheduling.ScheduledTasks","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":77,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:20.6378988Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Keep alive executing","TimingId":"650ff0c","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":64,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:20.6378988Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"350537e3-31c3-44c0-8c8e-a14aa7e40a45","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":72,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":257} -{"@t":"2018-11-12T09:24:20.6378988Z","@mt":"End request [{HttpRequestId}]: {RequestUrl} took {Duration}ms","@l":"Verbose","HttpRequestId":"350537e3-31c3-44c0-8c8e-a14aa7e40a45","RequestUrl":"http://localhost:8000/umbraco/ping.aspx","Duration":0,"SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":72,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":257} -{"@t":"2018-11-12T09:24:20.6532756Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Keep alive complete","Duration":19,"TimingId":"650ff0c","SourceContext":"Umbraco.Web.Scheduling.KeepAlive","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":48,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:20.6532756Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[KeepAlive] ","TaskType":"Umbraco.Web.Scheduling.KeepAlive","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":48,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:22.2760303Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"df6e94f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":72,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:22.3259059Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":49,"TimingId":"df6e94f","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":72,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:22.3259059Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":72,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:22.6590076Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerRegistration] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+TouchServerTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":61,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:26.8981241Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ScheduledPublishing] ","TaskType":"Umbraco.Web.Scheduling.ScheduledPublishing","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":72,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:27.3269877Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"63ae611","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":61,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:27.4047607Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":78,"TimingId":"63ae611","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":61,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} -{"@t":"2018-11-12T09:24:27.4057583Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":61,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} diff --git a/src/Umbraco.Tests.Integration/Umbraco.Configuration/Configurations/umbracoSettings.config b/src/Umbraco.Tests.Integration/Umbraco.Configuration/Configurations/umbracoSettings.config deleted file mode 100644 index 492b619e89..0000000000 --- a/src/Umbraco.Tests.Integration/Umbraco.Configuration/Configurations/umbracoSettings.config +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - jpeg,jpg,gif,bmp,png,tiff,tif - - - - umbracoWidth - umbracoHeight - umbracoBytes - umbracoExtension - - - umbracoWidth2 - umbracoHeight2 - umbracoBytes2 - umbracoExtension2 - - - - - - - - - 1047 - $site/error [@name = 'error'] - 8560867F-B88F-4C74-A9A4-679D8E5B3BFC - - - - - - robot@umbraco.dk - true - - - - Preview modeClick to end]]> - - - inline - - - ashx,aspx,ascx,config,cshtml,vbhtml,asmx,air,axd - - - jpg,png,gif - - - - - - true - - - false - - - true - - - - - - - - - true - - - - - - - - - - - - - plus - star - - - ae - oe - aa - ae - oe - ue - ss - ae - oe - - - - - - - - - 1440 - - - - - - - diff --git a/src/Umbraco.Tests.Integration/Umbraco.Configuration/Configurations/umbracoSettings.minimal.config b/src/Umbraco.Tests.Integration/Umbraco.Configuration/Configurations/umbracoSettings.minimal.config deleted file mode 100644 index d94a124c89..0000000000 --- a/src/Umbraco.Tests.Integration/Umbraco.Configuration/Configurations/umbracoSettings.minimal.config +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - 1 - - - - - - robot@umbraco.dk - - - - - - - - - - - - - - - diff --git a/src/Umbraco.Tests.Integration/Umbraco.Configuration/Configurations/web.config b/src/Umbraco.Tests.Integration/Umbraco.Configuration/Configurations/web.config deleted file mode 100644 index 5ac2d56d14..0000000000 --- a/src/Umbraco.Tests.Integration/Umbraco.Configuration/Configurations/web.config +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -
-
- - - - - - - - - diff --git a/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj b/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj index fe3c3e4031..c5b42f9848 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj +++ b/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj @@ -17,15 +17,6 @@ - - - Always - - - PreserveNewest - - - @@ -59,18 +50,6 @@ - - - Always - - - Always - - - Always - - - diff --git a/src/Umbraco.Tests.UnitTests/TestHelpers/Assets/UmbracoTraceLog.UNITTEST.20181112.json b/src/Umbraco.Tests.UnitTests/TestHelpers/Assets/UmbracoTraceLog.UNITTEST.20181112.json new file mode 100644 index 0000000000..0d788bd0eb --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/TestHelpers/Assets/UmbracoTraceLog.UNITTEST.20181112.json @@ -0,0 +1,102 @@ +{"@t":"2018-11-12T08:34:45.8371142Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Booting Umbraco 8.0.0-alpha.52 on DELLBOOK.","TimingId":"9e76e5f","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:45.8770471Z","@mt":"Runtime: {Runtime}","@l":"Debug","Runtime":"Umbraco.Web.Runtime.WebRuntime","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:45.8780049Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Acquiring MainDom.","TimingId":"fa0a8ff","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:45.8820357Z","@mt":"Acquiring.","SourceContext":"Umbraco.Core.MainDom","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:45.8870222Z","@mt":"Acquired.","SourceContext":"Umbraco.Core.MainDom","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:45.8890160Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Aquired.","Duration":9,"TimingId":"fa0a8ff","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:45.8899734Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Determining runtime level.","TimingId":"de01157","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:46.0515757Z","@mt":"Configuring.","@l":"Debug","SourceContext":"Umbraco.Core.Persistence.UmbracoDatabaseFactory","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:46.2091530Z","@mt":"Configured.","@l":"Debug","SourceContext":"Umbraco.Core.Persistence.UmbracoDatabaseFactory","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:46.7853838Z","@mt":"Final upgrade state is {FinalMigrationState}, database contains {DatabaseState}","@l":"Debug","FinalMigrationState":"{6B251841-3069-4AD5-8AE9-861F9523E8DA}","DatabaseState":"{6B251841-3069-4AD5-8AE9-861F9523E8DA}","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:46.7853838Z","@mt":"Runtime level: {RuntimeLevel}","@l":"Debug","RuntimeLevel":"Run","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:46.7853838Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Determined.","Duration":895,"TimingId":"de01157","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:46.7863814Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Resolving component types.","TimingId":"d88f42d","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:46.8053704Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Determining hash of code files on disk","TimingId":"e9adbba","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:46.8232811Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Hash determined","Duration":17,"TimingId":"e9adbba","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:46.8352878Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Composing.IDiscoverable","TimingId":"f2620d0","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:46.8372858Z","@mt":"Assemblies changes detected, need to rescan everything.","@l":"Debug","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:46.8372858Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1055270Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1055270Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Composing.IDiscoverable","Duration":270,"TimingId":"f2620d0","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1065263Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Components.IUmbracoComponent","TimingId":"c2611be","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1065263Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Core.Components.IUmbracoComponent","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1155013Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Core.Components.IUmbracoComponent","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1155013Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Components.IUmbracoComponent","Duration":9,"TimingId":"c2611be","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1155013Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Resolved.","Duration":329,"TimingId":"d88f42d","SourceContext":"Umbraco.Core.Runtime.CoreRuntime","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1164981Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Preparing component types.","TimingId":"e7ad952","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1444223Z","@mt":"Ordered Components: {SortedComponentTypes}","@l":"Debug","SortedComponentTypes":["Umbraco.Core.Runtime.CoreRuntimeComponent","Umbraco.Web.Runtime.WebRuntimeComponent","Umbraco.Web.Cache.CacheRefresherComponent","Umbraco.Core.Logging.WebProfilerComponent","Umbraco.Core.Components.AuditEventsComponent","Umbraco.Core.Components.ManifestWatcherComponent","Umbraco.Core.Components.RelateOnCopyComponent","Umbraco.Core.Components.RelateOnTrashComponent","Umbraco.Web.SignalR.PreviewHubComponent","Umbraco.Web.Search.ExamineComponent","Umbraco.Web.Scheduling.SchedulerComponent","Umbraco.ModelsBuilder.Umbraco.ModelsBuilderComponent","Umbraco.Web.PublishedCache.NuCache.NuCacheComponent","Umbraco.Web.PropertyEditors.PropertyEditorsComponent","Umbraco.Web.Components.BackOfficeUserAuditEventsComponent","Umbraco.Web.Components.NotificationsComponent","Umbraco.Web.Components.PublicAccessComponent","Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent","Umbraco.Core.Components.UmbracoCoreComponent"],"SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1444223Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Prepared component types.","Duration":27,"TimingId":"e7ad952","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1454207Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Instanciating components.","TimingId":"030399d","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1474142Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Instanciated components.","Duration":2,"TimingId":"030399d","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1484121Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Composing components. (log when >100ms)","TimingId":"ca1430e","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1763377Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Composing.IDiscoverable","TimingId":"2bdc8f5","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1773370Z","@mt":"Getting {TypeName}: found a cached type list.","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1773370Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Composing.IDiscoverable","Duration":0,"TimingId":"2bdc8f5","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1773370Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.PropertyEditors.IPropertyValueConverter","TimingId":"13d4fd9","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1773370Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Core.PropertyEditors.IPropertyValueConverter","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1883061Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Core.PropertyEditors.IPropertyValueConverter","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.1883061Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.PropertyEditors.IPropertyValueConverter","Duration":10,"TimingId":"13d4fd9","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.2152496Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting System.Web.Mvc.IController","TimingId":"5c51949","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.2152496Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"System.Web.Mvc.IController","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.2162328Z","@mt":"Got {TypeName}.","@l":"Debug","TypeName":"System.Web.Mvc.IController","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.2162328Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got System.Web.Mvc.IController","Duration":1,"TimingId":"5c51949","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3169624Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting System.Web.Http.Controllers.IHttpController","TimingId":"5fe641e","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3169624Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"System.Web.Http.Controllers.IHttpController","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3179595Z","@mt":"Got {TypeName}.","@l":"Debug","TypeName":"System.Web.Http.Controllers.IHttpController","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3179595Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got System.Web.Http.Controllers.IHttpController","Duration":1,"TimingId":"5fe641e","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3289305Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Composing.IDiscoverable","TimingId":"6ff2067","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3289305Z","@mt":"Getting {TypeName}: found a cached type list.","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3289305Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Composing.IDiscoverable","Duration":0,"TimingId":"6ff2067","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3289305Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Web.Mvc.SurfaceController","TimingId":"ee39a8f","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3299280Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Web.Mvc.SurfaceController","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3399005Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Web.Mvc.SurfaceController","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3408994Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Web.Mvc.SurfaceController","Duration":11,"TimingId":"ee39a8f","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3418946Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Composing.IDiscoverable","TimingId":"f53e587","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3418946Z","@mt":"Getting {TypeName}: found a cached type list.","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3418946Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Composing.IDiscoverable","Duration":0,"TimingId":"f53e587","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3418946Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Web.WebApi.UmbracoApiController","TimingId":"502b5b8","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3418946Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Web.WebApi.UmbracoApiController","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3498746Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Web.WebApi.UmbracoApiController","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3498746Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Web.WebApi.UmbracoApiController","Duration":8,"TimingId":"502b5b8","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3598465Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Composed Umbraco.Web.Runtime.WebRuntimeComponent.","Duration":163,"TimingId":"f8ec818","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3638356Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Composed components.","Duration":215,"TimingId":"ca1430e","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.3797931Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Initializing components. (log when >100ms)","TimingId":"3ac2c10","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.4137037Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Composing.IDiscoverable","TimingId":"78edf39","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.4137037Z","@mt":"Getting {TypeName}: found a cached type list.","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.4147001Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Composing.IDiscoverable","Duration":0,"TimingId":"78edf39","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.4147001Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.PropertyEditors.IDataEditor","TimingId":"4f94a60","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.4147001Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Core.PropertyEditors.IDataEditor","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.4227008Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Core.PropertyEditors.IDataEditor","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.4227008Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.PropertyEditors.IDataEditor","Duration":8,"TimingId":"4f94a60","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.6530958Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Core.Composing.IDiscoverable","TimingId":"df11c59","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.6530958Z","@mt":"Getting {TypeName}: found a cached type list.","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.6530958Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Composing.IDiscoverable","Duration":0,"TimingId":"df11c59","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.6530958Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Web.Actions.IAction","TimingId":"48d0b43","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.6530958Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Web.Actions.IAction","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.6600450Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Web.Actions.IAction","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:47.6600450Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Web.Actions.IAction","Duration":7,"TimingId":"48d0b43","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:48.7700754Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Initialised Umbraco.Core.Runtime.CoreRuntimeComponent.","Duration":1388,"TimingId":"48c0e52","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:49.0369724Z","@mt":"Loading content from local db...","@l":"Debug","SourceContext":"Umbraco.Web.PublishedCache.NuCache.PublishedSnapshotService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:49.0539274Z","@mt":"Loaded content from local db ({Duration}ms)","@l":"Debug","Duration":16,"SourceContext":"Umbraco.Web.PublishedCache.NuCache.PublishedSnapshotService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:50.0193175Z","@mt":"Loading media from local db...","@l":"Debug","SourceContext":"Umbraco.Web.PublishedCache.NuCache.PublishedSnapshotService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:50.0193175Z","@mt":"Loaded media from local db ({Duration}ms)","@l":"Debug","Duration":0,"SourceContext":"Umbraco.Web.PublishedCache.NuCache.PublishedSnapshotService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:50.2028672Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Initialised Umbraco.Web.Runtime.WebRuntimeComponent.","Duration":1432,"TimingId":"cfd6b8c","SourceContext":"Umbraco.Core.Components.BootLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:50.2048308Z","@mt":"Initializing Umbraco internal event handlers for cache refreshing.","SourceContext":"Umbraco.Web.Cache.CacheRefresherComponent","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:50.2277994Z","@mt":"Examine shutdown registered with MainDom","@l":"Debug","SourceContext":"Umbraco.Web.Search.ExamineComponent","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:50.3250434Z","@mt":"Getting {TypeName}: found a cached type list.","@l":"Debug","TypeName":"Umbraco.Core.Composing.IDiscoverable","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:50.3250434Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","EndMessage":"Got Umbraco.Core.Composing.IDiscoverable","Duration":0,"TimingId":"7581323","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:50.3250434Z","@mt":"{StartMessage} [Timing {TimingId}]","StartMessage":"Getting Umbraco.Web.HealthCheck.HealthCheck","TimingId":"3697358","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"INFO ","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:50.3260718Z","@mt":"Getting {TypeName}: scanning assemblies.","@l":"Debug","TypeName":"Umbraco.Web.HealthCheck.HealthCheck","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:34:50.3360158Z","@mt":"Got {TypeName}, caching ({CacheType}).","@l":"Debug","TypeName":"Umbraco.Web.HealthCheck.HealthCheck","CacheType":"true","SourceContext":"Umbraco.Core.Composing.TypeLoader","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":1,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG","HttpRequestNumber":1,"HttpRequestId":"557f45ba-0888-4216-8723-e226d795a2f7"} +{"@t":"2018-11-12T08:38:04.9607485Z","@mt":"Could not validate XSRF token","@l":"Error","@x":"System.Web.Mvc.HttpAntiForgeryException (0x80004005): The anti-forgery token could not be decrypted. If this application is hosted by a Web Farm or cluster, ensure that all machines are running the same version of ASP.NET Web Pages and that the configuration specifies explicit encryption and validation keys. AutoGenerate cannot be used in a cluster.\r\n at System.Web.Helpers.AntiXsrf.AntiForgeryTokenSerializer.Deserialize(String serializedToken)\r\n at System.Web.Helpers.AntiXsrf.AntiForgeryWorker.Validate(HttpContextBase httpContext, String cookieToken, String formToken)\r\n at System.Web.Helpers.AntiForgery.Validate(String cookieToken, String formToken)\r\n at Umbraco.Web.WebApi.Filters.AngularAntiForgeryHelper.ValidateTokens(String cookieToken, String headerToken) in C:\\Code\\Umbraco-CMS\\src\\Umbraco.Web\\WebApi\\Filters\\AngularAntiForgeryHelper.cs:line 58","SourceContext":"Umbraco.Web.WebApi.Filters.AngularAntiForgeryHelper","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":7,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ERROR","HttpRequestNumber":63,"HttpRequestId":"9b93e05a-aad8-461d-81f1-42d3fe481078"} +{"@t":"2018-11-12T08:38:05.6858005Z","@mt":"The tree definition: {AddElement} could not be resolved to a .Net object type","@l":"Warning","AddElement":"","SourceContext":"Umbraco.Web.Services.ApplicationTreeService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"WARN ","HttpRequestNumber":73,"HttpRequestId":"b5c6de2e-81c0-41bd-9e0e-e0185691a5eb"} +{"@t":"2018-11-12T08:38:05.6887919Z","@mt":"The tree definition: {AddElement} could not be resolved to a .Net object type","@l":"Warning","AddElement":"","SourceContext":"Umbraco.Web.Services.ApplicationTreeService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"WARN ","HttpRequestNumber":73,"HttpRequestId":"b5c6de2e-81c0-41bd-9e0e-e0185691a5eb"} +{"@t":"2018-11-12T08:38:05.6897893Z","@mt":"The tree definition: {AddElement} could not be resolved to a .Net object type","@l":"Warning","AddElement":"","SourceContext":"Umbraco.Web.Services.ApplicationTreeService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"WARN ","HttpRequestNumber":73,"HttpRequestId":"b5c6de2e-81c0-41bd-9e0e-e0185691a5eb"} +{"@t":"2018-11-12T08:38:05.6907902Z","@mt":"The tree definition: {AddElement} could not be resolved to a .Net object type","@l":"Warning","AddElement":"","SourceContext":"Umbraco.Web.Services.ApplicationTreeService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"WARN ","HttpRequestNumber":73,"HttpRequestId":"b5c6de2e-81c0-41bd-9e0e-e0185691a5eb"} +{"@t":"2018-11-12T08:38:05.6917843Z","@mt":"The tree definition: {AddElement} could not be resolved to a .Net object type","@l":"Warning","AddElement":"","SourceContext":"Umbraco.Web.Services.ApplicationTreeService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"WARN ","HttpRequestNumber":73,"HttpRequestId":"b5c6de2e-81c0-41bd-9e0e-e0185691a5eb"} +{"@t":"2018-11-12T08:38:05.6917843Z","@mt":"The tree definition: {AddElement} could not be resolved to a .Net object type","@l":"Warning","AddElement":"","SourceContext":"Umbraco.Web.Services.ApplicationTreeService","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":26,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"WARN ","HttpRequestNumber":73,"HttpRequestId":"b5c6de2e-81c0-41bd-9e0e-e0185691a5eb"} +{"@t":"2018-11-12T08:39:18.1562229Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"f9683dae-21bd-479a-8fca-504b288c3875","RequestUrl":"http://localhost:8000/umbraco","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":37,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":77} +{"@t":"2018-11-12T08:39:18.1562229Z","@mt":"Begin request [{HttpRequestId}]: {RequestUrl}","@l":"Verbose","HttpRequestId":"511a0884-22a5-4369-beb9-80e75b1cb4dd","RequestUrl":"http://localhost:8000/umbraco/backoffice/UmbracoApi/Authentication/GetRemainingTimeoutSeconds","SourceContext":"Umbraco.Web.UmbracoModule","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":33,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"ALL ","HttpRequestNumber":78} +{"@t":"2018-11-12T08:39:18.1632038Z","@mt":"{StartMessage} [Timing {TimingId}]","@l":"Debug","StartMessage":"Syncing from database...","TimingId":"7211c02","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} +{"@t":"2018-11-12T08:39:18.1961166Z","@mt":"{EndMessage} ({Duration}ms) [Timing {TimingId}]","@l":"Debug","EndMessage":"Completed.","Duration":33,"TimingId":"7211c02","SourceContext":"Umbraco.Core.Sync.DatabaseServerMessenger","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} +{"@t":"2018-11-12T08:39:18.1971147Z","@mt":"{LogPrefix} Task added {TaskType}","@l":"Debug","LogPrefix":"[ServerInstProcess] ","TaskType":"Umbraco.Web.Components.DatabaseServerRegistrarAndMessengerComponent+InstructionProcessTask","SourceContext":"Umbraco.Web.Scheduling.BackgroundTaskRunner","ProcessId":27004,"ProcessName":"iisexpress","ThreadId":36,"AppDomainId":2,"AppDomainAppId":"LMW3SVC2ROOT","MachineName":"DELLBOOK","Log4NetLevel":"DEBUG"} diff --git a/src/Umbraco.Tests.Integration/Logging/logviewer.searches.config.js b/src/Umbraco.Tests.UnitTests/TestHelpers/Assets/logviewer.searches.config.js similarity index 100% rename from src/Umbraco.Tests.Integration/Logging/logviewer.searches.config.js rename to src/Umbraco.Tests.UnitTests/TestHelpers/Assets/logviewer.searches.config.js diff --git a/src/Umbraco.Tests.UnitTests/TestHelpers/TestHelper.cs b/src/Umbraco.Tests.UnitTests/TestHelpers/TestHelper.cs index 1ebead07c5..b3d893acd5 100644 --- a/src/Umbraco.Tests.UnitTests/TestHelpers/TestHelper.cs +++ b/src/Umbraco.Tests.UnitTests/TestHelpers/TestHelper.cs @@ -66,9 +66,13 @@ namespace Umbraco.Tests.TestHelpers public override IHostingEnvironment GetHostingEnvironment() { + var testPath = TestContext.CurrentContext.TestDirectory.Split("bin")[0]; return new AspNetCoreHostingEnvironment( Mock.Of>(x=>x.CurrentValue == new HostingSettings()), - Mock.Of(x=>x.WebRootPath == "/")); + Mock.Of( + x=> + x.WebRootPath == "/" && + x.ContentRootPath == testPath)); } public override IApplicationShutdownRegistry GetHostingEnvironmentLifetime() diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/BackOffice/BackOfficeLookupNormalizerTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/BackOffice/BackOfficeLookupNormalizerTests.cs index 532b488662..3feb458fe8 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/BackOffice/BackOfficeLookupNormalizerTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/BackOffice/BackOfficeLookupNormalizerTests.cs @@ -2,7 +2,7 @@ using NUnit.Framework; using Umbraco.Core.BackOffice; -namespace Umbraco.Tests.Integration.Umbraco.Web.Backoffice +namespace Umbraco.Tests.UnitTests.Umbraco.Web.Backoffice { public class BackOfficeLookupNormalizerTests { diff --git a/src/Umbraco.Tests.Integration/Logging/LogviewerTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Logging/LogviewerTests.cs similarity index 82% rename from src/Umbraco.Tests.Integration/Logging/LogviewerTests.cs rename to src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Logging/LogviewerTests.cs index 789fd24291..2b78714997 100644 --- a/src/Umbraco.Tests.Integration/Logging/LogviewerTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Logging/LogviewerTests.cs @@ -2,15 +2,16 @@ using NUnit.Framework; using Serilog; using System; +using System.Diagnostics; using System.IO; using System.Linq; using Microsoft.Extensions.Logging; +using StackExchange.Profiling.Internal; using Umbraco.Core; using Umbraco.Core.Logging.Viewer; using Umbraco.Tests.TestHelpers; -using Umbraco.Tests.Integration.Implementations; -namespace Umbraco.Tests.Integration.Logging +namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Logging { [TestFixture] public class LogviewerTests @@ -33,19 +34,19 @@ namespace Umbraco.Tests.Integration.Logging [OneTimeSetUp] public void Setup() { + var testRoot = TestContext.CurrentContext.TestDirectory.Split("bin")[0]; //Create an example JSON log file to check results //As a one time setup for all tets in this class/fixture - var testHelper = new TestHelper(); - var ioHelper = testHelper.IOHelper; - var hostingEnv = testHelper.GetHostingEnvironment(); + var ioHelper = TestHelper.IOHelper; + var hostingEnv = TestHelper.GetHostingEnvironment(); - var loggingConfiguration = testHelper.GetLoggingConfiguration(hostingEnv); + var loggingConfiguration = TestHelper.GetLoggingConfiguration(hostingEnv); - var exampleLogfilePath = Path.Combine(TestContext.CurrentContext.TestDirectory, @"Logging\", _logfileName); + var exampleLogfilePath = Path.Combine(testRoot, @"TestHelpers\Assets\", _logfileName); _newLogfileDirPath = loggingConfiguration.LogDirectory; _newLogfilePath = Path.Combine(_newLogfileDirPath, _logfileName); - var exampleSearchfilePath = Path.Combine(TestContext.CurrentContext.TestDirectory, @"Logging\", _searchfileName); + var exampleSearchfilePath = Path.Combine(testRoot, @"TestHelpers\Assets\", _searchfileName); _newSearchfileDirPath = Path.Combine(hostingEnv.ApplicationPhysicalPath, @"Config\"); _newSearchfilePath = Path.Combine(_newSearchfileDirPath, _searchfileName); @@ -80,7 +81,7 @@ namespace Umbraco.Tests.Integration.Logging var numberOfErrors = _logViewer.GetNumberOfErrors(_logTimePeriod); //Our dummy log should contain 2 errors - Assert.AreEqual(2, numberOfErrors); + Assert.AreEqual(1, numberOfErrors); } [Test] @@ -88,11 +89,11 @@ namespace Umbraco.Tests.Integration.Logging { var logCounts = _logViewer.GetLogLevelCounts(_logTimePeriod); - Assert.AreEqual(1954, logCounts.Debug); - Assert.AreEqual(2, logCounts.Error); + Assert.AreEqual(55, logCounts.Debug); + Assert.AreEqual(1, logCounts.Error); Assert.AreEqual(0, logCounts.Fatal); - Assert.AreEqual(62, logCounts.Information); - Assert.AreEqual(7, logCounts.Warning); + Assert.AreEqual(38, logCounts.Information); + Assert.AreEqual(6, logCounts.Warning); } [Test] @@ -101,7 +102,7 @@ namespace Umbraco.Tests.Integration.Logging var templates = _logViewer.GetMessageTemplates(_logTimePeriod); //Count no of templates - Assert.AreEqual(43, templates.Count()); + Assert.AreEqual(25, templates.Count()); //Verify all templates & counts are unique CollectionAssert.AllItemsAreUnique(templates); @@ -113,8 +114,8 @@ namespace Umbraco.Tests.Integration.Logging var popularTemplate = templates.FirstOrDefault(); Assert.IsNotNull(popularTemplate); - Assert.AreEqual("{LogPrefix} Task added {TaskType}", popularTemplate.MessageTemplate); - Assert.AreEqual(689, popularTemplate.Count); + Assert.AreEqual("{EndMessage} ({Duration}ms) [Timing {TimingId}]", popularTemplate.MessageTemplate); + Assert.AreEqual(26, popularTemplate.Count); } [Test] @@ -129,13 +130,16 @@ namespace Umbraco.Tests.Integration.Logging [Test] public void Logs_Can_Be_Queried() { + var sw = new Stopwatch(); + sw.Start(); //Should get me the most 100 recent log entries & using default overloads for remaining params var allLogs = _logViewer.GetLogs(_logTimePeriod, pageNumber: 1); + sw.Stop(); //Check we get 100 results back for a page & total items all good :) Assert.AreEqual(100, allLogs.Items.Count()); - Assert.AreEqual(2410, allLogs.TotalItems); - Assert.AreEqual(25, allLogs.TotalPages); + Assert.AreEqual(102, allLogs.TotalItems); + Assert.AreEqual(2, allLogs.TotalPages); //Check collection all contain same object type CollectionAssert.AllItemsAreInstancesOfType(allLogs.Items, typeof(LogMessage)); @@ -143,14 +147,14 @@ namespace Umbraco.Tests.Integration.Logging //Check first item is newest var newestItem = allLogs.Items.First(); DateTimeOffset newDate; - DateTimeOffset.TryParse("2018-11-12T09:24:27.4057583Z", out newDate); + DateTimeOffset.TryParse("2018-11-12T08:39:18.1971147Z", out newDate); Assert.AreEqual(newDate, newestItem.Timestamp); //Check we call method again with a smaller set of results & in ascending var smallQuery = _logViewer.GetLogs(_logTimePeriod, pageNumber: 1, pageSize: 10, orderDirection: Direction.Ascending); Assert.AreEqual(10, smallQuery.Items.Count()); - Assert.AreEqual(241, smallQuery.TotalPages); + Assert.AreEqual(11, smallQuery.TotalPages); //Check first item is oldest var oldestItem = smallQuery.Items.First(); @@ -163,12 +167,12 @@ namespace Umbraco.Tests.Integration.Logging //Rather than expect 0 items - get all items back & ignore the invalid levels string[] invalidLogLevels = { "Invalid", "NotALevel" }; var queryWithInvalidLevels = _logViewer.GetLogs(_logTimePeriod, pageNumber: 1, logLevels: invalidLogLevels); - Assert.AreEqual(2410, queryWithInvalidLevels.TotalItems); + Assert.AreEqual(102, queryWithInvalidLevels.TotalItems); //Check we can call method with an array of logLevel (error & warning) string [] logLevels = { "Warning", "Error" }; var queryWithLevels = _logViewer.GetLogs(_logTimePeriod, pageNumber: 1, logLevels: logLevels); - Assert.AreEqual(9, queryWithLevels.TotalItems); + Assert.AreEqual(7, queryWithLevels.TotalItems); //Query @Level='Warning' BUT we pass in array of LogLevels for Debug & Info (Expect to get 0 results) string[] logLevelMismatch = { "Debug", "Information" }; @@ -176,12 +180,12 @@ namespace Umbraco.Tests.Integration.Logging Assert.AreEqual(0, filterLevelQuery.TotalItems); } - [TestCase("", 2410)] - [TestCase("Has(@Exception)", 2)] - [TestCase("Has(Duration) and Duration > 1000", 13)] - [TestCase("Not(@Level = 'Verbose') and Not(@Level= 'Debug')", 71)] - [TestCase("StartsWith(SourceContext, 'Umbraco.Core')", 1183)] - [TestCase("@MessageTemplate = '{EndMessage} ({Duration}ms) [Timing {TimingId}]'", 622)] + [TestCase("", 102)] + [TestCase("Has(@Exception)", 1)] + [TestCase("Has(Duration) and Duration > 1000", 2)] + [TestCase("Not(@Level = 'Verbose') and Not(@Level= 'Debug')", 45)] + [TestCase("StartsWith(SourceContext, 'Umbraco.Core')", 86)] + [TestCase("@MessageTemplate = '{EndMessage} ({Duration}ms) [Timing {TimingId}]'", 26)] [TestCase("SortedComponentTypes[?] = 'Umbraco.Web.Search.ExamineComponent'", 1)] [TestCase("Contains(SortedComponentTypes[?], 'DatabaseServer')", 1)] [Test] diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.UnitTests.csproj b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.UnitTests.csproj index 938eff3096..76764d0483 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.UnitTests.csproj +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.UnitTests.csproj @@ -24,4 +24,9 @@ + + + + + diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/Security/BackOfficeCookieManagerTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/Security/BackOfficeCookieManagerTests.cs index 9a5f9dded7..e1a8ff9c58 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/Security/BackOfficeCookieManagerTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/Security/BackOfficeCookieManagerTests.cs @@ -12,7 +12,7 @@ using Umbraco.Web; using Umbraco.Web.BackOffice.Controllers; using Umbraco.Web.BackOffice.Security; -namespace Umbraco.Tests.Integration.Umbraco.Web.Backoffice.Security +namespace Umbraco.Tests.UnitTests.Umbraco.Web.Backoffice.Security { [TestFixture] public class BackOfficeCookieManagerTests From cfaa353dff491e1046ee65e4f55faa2066c81224 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Wed, 28 Oct 2020 14:54:16 +0100 Subject: [PATCH 18/56] Fixed isses with NewEmpty* integration tests Signed-off-by: Bjarke Berg --- .../Testing/UmbracoIntegrationTest.cs | 34 ++++++++-- .../Scoping/ScopeFileSystemsTests.cs | 6 +- .../Scoping/ScopeTests.cs | 62 +++++++++---------- .../Services/ThreadSafetyServiceTest.cs | 2 - src/Umbraco.Tests/Umbraco.Tests.csproj | 1 - 5 files changed, 63 insertions(+), 42 deletions(-) rename src/{Umbraco.Tests => Umbraco.Tests.Integration/Umbraco.Infrastructure}/Scoping/ScopeTests.cs (93%) diff --git a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs index f29ca61d65..3430644795 100644 --- a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs +++ b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs @@ -92,6 +92,7 @@ namespace Umbraco.Tests.Integration.Testing [SetUp] public virtual void Setup() { + InMemoryConfiguration[Constants.Configuration.ConfigGlobal + ":" + nameof(GlobalSettings.InstallEmptyDatabase)] = "true"; var hostBuilder = CreateHostBuilder(); var host = hostBuilder.Start(); @@ -143,8 +144,10 @@ namespace Umbraco.Tests.Integration.Testing .ConfigureAppConfiguration((context, configBuilder) => { context.HostingEnvironment = TestHelper.GetWebHostEnvironment(); - Configuration = context.Configuration; + configBuilder.Sources.Clear(); configBuilder.AddInMemoryCollection(InMemoryConfiguration); + + Configuration = configBuilder.Build(); }) .ConfigureServices((hostContext, services) => { @@ -392,12 +395,21 @@ namespace Umbraco.Tests.Integration.Testing break; case UmbracoTestOptions.Database.NewEmptyPerTest: - var newEmptyDbId = db.AttachEmpty(); // Add teardown callback OnTestTearDown(() => db.Detach(newEmptyDbId)); + // We must re-configure our current factory since attaching a new LocalDb from the pool changes connection strings + if (!databaseFactory.Configured) + { + databaseFactory.Configure(db.ConnectionString, Constants.DatabaseProviders.SqlServer); + } + + // re-run the runtime level check + runtimeState.DetermineRuntimeLevel(); + + Assert.AreEqual(RuntimeLevel.Install, runtimeState.Level); break; case UmbracoTestOptions.Database.NewSchemaPerFixture: @@ -424,11 +436,23 @@ namespace Umbraco.Tests.Integration.Testing break; case UmbracoTestOptions.Database.NewEmptyPerFixture: + // Only attach schema once per fixture + // Doing it more than once will block the process since the old db hasn't been detached + // and it would be the same as NewSchemaPerTest even if it didn't block + if (FirstTestInFixture) + { + // New DB + Schema + var newEmptyFixtureDbId = db.AttachEmpty(); - throw new NotImplementedException(); + // Add teardown callback + OnFixtureTearDown(() => db.Detach(newEmptyFixtureDbId)); + } - //// Add teardown callback - //integrationTest.OnFixtureTearDown(() => db.Detach()); + // We must re-configure our current factory since attaching a new LocalDb from the pool changes connection strings + if (!databaseFactory.Configured) + { + databaseFactory.Configure(db.ConnectionString, Constants.DatabaseProviders.SqlServer); + } break; default: diff --git a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopeFileSystemsTests.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopeFileSystemsTests.cs index 38a3674d21..1c398f681a 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopeFileSystemsTests.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopeFileSystemsTests.cs @@ -14,7 +14,7 @@ using Umbraco.Tests.Testing; using Umbraco.Tests.Integration.Testing; using FileSystems = Umbraco.Core.IO.FileSystems; -namespace Umbraco.Tests.Scoping +namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Scoping { [TestFixture] [UmbracoTest(Database = UmbracoTestOptions.Database.NewEmptyPerTest)] @@ -44,7 +44,7 @@ namespace Umbraco.Tests.Scoping TestHelper.DeleteDirectory(ioHelper.MapPath("FileSysTests")); TestHelper.DeleteDirectory(ioHelper.MapPath(Constants.SystemDirectories.TempData.EnsureEndsWith('/') + "ShadowFs")); } - + [Test] public void test_MediaFileSystem_does_not_write_to_physical_file_system_when_scoped_if_scope_does_not_complete() { @@ -61,7 +61,7 @@ namespace Umbraco.Tests.Scoping mediaFileSystem.AddFile("f1.txt", ms); Assert.IsTrue(mediaFileSystem.FileExists("f1.txt")); Assert.IsFalse(physMediaFileSystem.FileExists("f1.txt")); - + Assert.IsTrue(mediaFileSystem.FileExists("f1.txt")); Assert.IsFalse(physMediaFileSystem.FileExists("f1.txt")); } diff --git a/src/Umbraco.Tests/Scoping/ScopeTests.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopeTests.cs similarity index 93% rename from src/Umbraco.Tests/Scoping/ScopeTests.cs rename to src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopeTests.cs index eb4a01d06b..85331bb2af 100644 --- a/src/Umbraco.Tests/Scoping/ScopeTests.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopeTests.cs @@ -3,20 +3,20 @@ using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Persistence; using Umbraco.Core.Scoping; -using Umbraco.Tests.TestHelpers; +using Umbraco.Tests.Integration.Testing; using Umbraco.Tests.Testing; -namespace Umbraco.Tests.Scoping +namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Scoping { [TestFixture] - [UmbracoTest(Database = UmbracoTestOptions.Database.NewEmptyPerTest)] - public class ScopeTests : TestWithDatabaseBase + [UmbracoTest(Database = UmbracoTestOptions.Database.NewEmptyPerFixture)] + public class ScopeTests : UmbracoIntegrationTest { - // setup - public override void SetUp() - { - base.SetUp(); + private new ScopeProvider ScopeProvider => (ScopeProvider) base.ScopeProvider; + [SetUp] + public void SetUp() + { Assert.IsNull(ScopeProvider.AmbientScope); // gone } @@ -25,7 +25,7 @@ namespace Umbraco.Tests.Scoping { var scopeProvider = ScopeProvider; - Assert.IsNull(scopeProvider.AmbientScope); + Assert.IsNull(ScopeProvider.AmbientScope); using (var scope = scopeProvider.CreateScope()) { Assert.IsInstanceOf(scope); @@ -241,32 +241,32 @@ namespace Umbraco.Tests.Scoping using (var scope = scopeProvider.CreateScope()) { - scope.Database.Execute("CREATE TABLE tmp (id INT, name NVARCHAR(64))"); + scope.Database.Execute("CREATE TABLE tmp3 (id INT, name NVARCHAR(64))"); scope.Complete(); } using (var scope = scopeProvider.CreateScope()) { - scope.Database.Execute("INSERT INTO tmp (id, name) VALUES (1, 'a')"); - var n = scope.Database.ExecuteScalar("SELECT name FROM tmp WHERE id=1"); + scope.Database.Execute("INSERT INTO tmp3 (id, name) VALUES (1, 'a')"); + var n = scope.Database.ExecuteScalar("SELECT name FROM tmp3 WHERE id=1"); Assert.AreEqual("a", n); } using (var scope = scopeProvider.CreateScope()) { - var n = scope.Database.ExecuteScalar("SELECT name FROM tmp WHERE id=1"); + var n = scope.Database.ExecuteScalar("SELECT name FROM tmp3 WHERE id=1"); Assert.IsNull(n); } using (var scope = scopeProvider.CreateScope()) { - scope.Database.Execute("INSERT INTO tmp (id, name) VALUES (1, 'a')"); + scope.Database.Execute("INSERT INTO tmp3 (id, name) VALUES (1, 'a')"); scope.Complete(); } using (var scope = scopeProvider.CreateScope()) { - var n = scope.Database.ExecuteScalar("SELECT name FROM tmp WHERE id=1"); + var n = scope.Database.ExecuteScalar("SELECT name FROM tmp3 WHERE id=1"); Assert.AreEqual("a", n); } } @@ -278,24 +278,24 @@ namespace Umbraco.Tests.Scoping using (var scope = scopeProvider.CreateScope()) { - scope.Database.Execute("CREATE TABLE tmp (id INT, name NVARCHAR(64))"); + scope.Database.Execute($"CREATE TABLE tmp1 (id INT, name NVARCHAR(64))"); scope.Complete(); } using (var scope = scopeProvider.CreateScope()) { - scope.Database.Execute("INSERT INTO tmp (id, name) VALUES (1, 'a')"); - var n = scope.Database.ExecuteScalar("SELECT name FROM tmp WHERE id=1"); + scope.Database.Execute("INSERT INTO tmp1 (id, name) VALUES (1, 'a')"); + var n = scope.Database.ExecuteScalar("SELECT name FROM tmp1 WHERE id=1"); Assert.AreEqual("a", n); using (var nested = scopeProvider.CreateScope()) { - nested.Database.Execute("INSERT INTO tmp (id, name) VALUES (2, 'b')"); - var nn = nested.Database.ExecuteScalar("SELECT name FROM tmp WHERE id=2"); + nested.Database.Execute("INSERT INTO tmp1 (id, name) VALUES (2, 'b')"); + var nn = nested.Database.ExecuteScalar("SELECT name FROM tmp1 WHERE id=2"); Assert.AreEqual("b", nn); } - n = scope.Database.ExecuteScalar("SELECT name FROM tmp WHERE id=2"); + n = scope.Database.ExecuteScalar("SELECT name FROM tmp1 WHERE id=2"); Assert.AreEqual("b", n); scope.Complete(); @@ -303,9 +303,9 @@ namespace Umbraco.Tests.Scoping using (var scope = scopeProvider.CreateScope()) { - var n = scope.Database.ExecuteScalar("SELECT name FROM tmp WHERE id=1"); + var n = scope.Database.ExecuteScalar("SELECT name FROM tmp1 WHERE id=1"); Assert.IsNull(n); - n = scope.Database.ExecuteScalar("SELECT name FROM tmp WHERE id=2"); + n = scope.Database.ExecuteScalar("SELECT name FROM tmp1 WHERE id=2"); Assert.IsNull(n); } } @@ -317,33 +317,33 @@ namespace Umbraco.Tests.Scoping using (var scope = scopeProvider.CreateScope()) { - scope.Database.Execute("CREATE TABLE tmp (id INT, name NVARCHAR(64))"); + scope.Database.Execute("CREATE TABLE tmp2 (id INT, name NVARCHAR(64))"); scope.Complete(); } using (var scope = scopeProvider.CreateScope()) { - scope.Database.Execute("INSERT INTO tmp (id, name) VALUES (1, 'a')"); - var n = scope.Database.ExecuteScalar("SELECT name FROM tmp WHERE id=1"); + scope.Database.Execute("INSERT INTO tmp2 (id, name) VALUES (1, 'a')"); + var n = scope.Database.ExecuteScalar("SELECT name FROM tmp2 WHERE id=1"); Assert.AreEqual("a", n); using (var nested = scopeProvider.CreateScope()) { - nested.Database.Execute("INSERT INTO tmp (id, name) VALUES (2, 'b')"); - var nn = nested.Database.ExecuteScalar("SELECT name FROM tmp WHERE id=2"); + nested.Database.Execute("INSERT INTO tmp2 (id, name) VALUES (2, 'b')"); + var nn = nested.Database.ExecuteScalar("SELECT name FROM tmp2 WHERE id=2"); Assert.AreEqual("b", nn); nested.Complete(); } - n = scope.Database.ExecuteScalar("SELECT name FROM tmp WHERE id=2"); + n = scope.Database.ExecuteScalar("SELECT name FROM tmp2 WHERE id=2"); Assert.AreEqual("b", n); } using (var scope = scopeProvider.CreateScope()) { - var n = scope.Database.ExecuteScalar("SELECT name FROM tmp WHERE id=1"); + var n = scope.Database.ExecuteScalar("SELECT name FROM tmp2 WHERE id=1"); Assert.IsNull(n); - n = scope.Database.ExecuteScalar("SELECT name FROM tmp WHERE id=2"); + n = scope.Database.ExecuteScalar("SELECT name FROM tmp2 WHERE id=2"); Assert.IsNull(n); } } diff --git a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ThreadSafetyServiceTest.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ThreadSafetyServiceTest.cs index c36968adeb..1d3b799679 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ThreadSafetyServiceTest.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ThreadSafetyServiceTest.cs @@ -44,8 +44,6 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services CreateTestData(); } - protected override string TestDBConnectionString => base.TestDBConnectionString + "default lock timeout=60000;"; - private const int MaxThreadCount = 20; diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 526e1aa252..7c2214a0ed 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -144,7 +144,6 @@ - From 77544812e6cf2bf20e007fdd2e60e6b2a5a399b0 Mon Sep 17 00:00:00 2001 From: Elitsa Marinovska Date: Thu, 29 Oct 2020 12:45:35 +0100 Subject: [PATCH 19/56] Migrating some more classes that are using EntityBasic --- .../Models/ContentEditing/AssignedContentPermissions.cs | 0 .../Models/ContentEditing/AssignedUserGroupPermissions.cs | 0 .../Models/ContentEditing/ContentTypeBasic.cs | 1 - .../Models/ContentEditing/ContentTypeCompositionDisplay.cs | 0 .../Models/ContentEditing/ContentTypeSave.cs | 7 +++---- .../Models/ContentEditing/DataTypeBasic.cs | 0 .../Models/ContentEditing/DataTypeDisplay.cs | 4 +--- .../Models/ContentEditing/DataTypeReferences.cs | 0 .../Models/ContentEditing/DataTypeSave.cs | 1 - .../Models/ContentEditing/DictionaryDisplay.cs | 4 ++-- .../Models/ContentEditing/DictionarySave.cs | 4 ++-- .../Models/ContentEditing/DocumentTypeDisplay.cs | 1 - .../Models/ContentEditing/DocumentTypeSave.cs | 0 .../Models/ContentEditing/MacroDisplay.cs | 4 ++-- .../Models/ContentEditing/MediaTypeDisplay.cs | 0 .../Models/ContentEditing/MediaTypeSave.cs | 0 .../Models/ContentEditing/MemberGroupDisplay.cs | 5 ++--- .../Models/ContentEditing/MemberGroupSave.cs | 0 .../Models/ContentEditing/MemberTypeDisplay.cs | 1 - .../Models/ContentEditing/MemberTypeSave.cs | 1 - .../Models/ContentEditing/RelationTypeDisplay.cs | 0 .../Models/ContentEditing/RelationTypeSave.cs | 0 .../Models/ContentEditing/SearchResultEntity.cs | 1 - .../Models/ContentEditing/TreeSearchResult.cs | 0 .../Models/ContentEditing/UserBasic.cs | 0 .../Models/ContentEditing/UserDisplay.cs | 2 -- .../Models/ContentEditing/UserGroupBasic.cs | 0 .../Models/ContentEditing/UserGroupDisplay.cs | 0 .../Models/ContentEditing/UserGroupSave.cs | 3 --- .../Models/ContentEditing/UserInvite.cs | 0 .../Models/ContentEditing/UserSave.cs | 1 - .../Models/ContentEditing/ContentItemDisplay.cs | 7 ++----- .../Models/ContentEditing/ContentItemDisplayBase.cs | 1 - .../Models/ContentEditing/ContentVariationDisplay.cs | 3 +-- .../Models/ContentEditing/TabbedContentItem.cs | 1 - 35 files changed, 15 insertions(+), 37 deletions(-) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/AssignedContentPermissions.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/AssignedUserGroupPermissions.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/ContentTypeBasic.cs (99%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/ContentTypeCompositionDisplay.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/ContentTypeSave.cs (94%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/DataTypeBasic.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/DataTypeDisplay.cs (96%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/DataTypeReferences.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/DataTypeSave.cs (99%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/DictionaryDisplay.cs (90%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/DictionarySave.cs (91%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/DocumentTypeDisplay.cs (99%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/DocumentTypeSave.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/MacroDisplay.cs (93%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/MediaTypeDisplay.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/MediaTypeSave.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/MemberGroupDisplay.cs (88%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/MemberGroupSave.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/MemberTypeDisplay.cs (99%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/MemberTypeSave.cs (99%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/RelationTypeDisplay.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/RelationTypeSave.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/SearchResultEntity.cs (99%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/TreeSearchResult.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/UserBasic.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/UserDisplay.cs (98%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/UserGroupBasic.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/UserGroupDisplay.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/UserGroupSave.cs (98%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/UserInvite.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/UserSave.cs (98%) diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/AssignedContentPermissions.cs b/src/Umbraco.Core/Models/ContentEditing/AssignedContentPermissions.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/AssignedContentPermissions.cs rename to src/Umbraco.Core/Models/ContentEditing/AssignedContentPermissions.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/AssignedUserGroupPermissions.cs b/src/Umbraco.Core/Models/ContentEditing/AssignedUserGroupPermissions.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/AssignedUserGroupPermissions.cs rename to src/Umbraco.Core/Models/ContentEditing/AssignedUserGroupPermissions.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentTypeBasic.cs b/src/Umbraco.Core/Models/ContentEditing/ContentTypeBasic.cs similarity index 99% rename from src/Umbraco.Infrastructure/Models/ContentEditing/ContentTypeBasic.cs rename to src/Umbraco.Core/Models/ContentEditing/ContentTypeBasic.cs index 33749a451c..f9d633ebea 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentTypeBasic.cs +++ b/src/Umbraco.Core/Models/ContentEditing/ContentTypeBasic.cs @@ -5,7 +5,6 @@ using System.ComponentModel.DataAnnotations; using System.Runtime.Serialization; using Umbraco.Core; - namespace Umbraco.Web.Models.ContentEditing { /// diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentTypeCompositionDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/ContentTypeCompositionDisplay.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/ContentTypeCompositionDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/ContentTypeCompositionDisplay.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentTypeSave.cs b/src/Umbraco.Core/Models/ContentEditing/ContentTypeSave.cs similarity index 94% rename from src/Umbraco.Infrastructure/Models/ContentEditing/ContentTypeSave.cs rename to src/Umbraco.Core/Models/ContentEditing/ContentTypeSave.cs index a10fe3ded5..005e3c96a6 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentTypeSave.cs +++ b/src/Umbraco.Core/Models/ContentEditing/ContentTypeSave.cs @@ -37,7 +37,7 @@ namespace Umbraco.Web.Models.ContentEditing public virtual IEnumerable Validate(ValidationContext validationContext) { if (CompositeContentTypes.Any(x => x.IsNullOrWhiteSpace())) - yield return new ValidationResult("Composite Content Type value cannot be null", new[] {"CompositeContentTypes"}); + yield return new ValidationResult("Composite Content Type value cannot be null", new[] { "CompositeContentTypes" }); } } @@ -89,7 +89,7 @@ namespace Umbraco.Web.Models.ContentEditing var lastIndex = Groups.IndexOf(duplicateGroups.Last().Last()); yield return new ValidationResult("Duplicate group names not allowed", new[] { - string.Format("Groups[{0}].Name", lastIndex) + $"Groups[{lastIndex}].Name" }); } @@ -102,10 +102,9 @@ namespace Umbraco.Web.Models.ContentEditing yield return new ValidationResult("Duplicate property aliases not allowed: " + lastProperty.Alias, new[] { - string.Format("Groups[{0}].Properties[{1}].Alias", propertyGroup.SortOrder, lastProperty.SortOrder) + $"Groups[{propertyGroup.SortOrder}].Properties[{lastProperty.SortOrder}].Alias" }); } - } } } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/DataTypeBasic.cs b/src/Umbraco.Core/Models/ContentEditing/DataTypeBasic.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/DataTypeBasic.cs rename to src/Umbraco.Core/Models/ContentEditing/DataTypeBasic.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/DataTypeDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/DataTypeDisplay.cs similarity index 96% rename from src/Umbraco.Infrastructure/Models/ContentEditing/DataTypeDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/DataTypeDisplay.cs index 9bead4bf5d..65ece0f6aa 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/DataTypeDisplay.cs +++ b/src/Umbraco.Core/Models/ContentEditing/DataTypeDisplay.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Runtime.Serialization; @@ -34,6 +33,5 @@ namespace Umbraco.Web.Models.ContentEditing /// [DataMember(Name = "notifications")] public List Notifications { get; private set; } - } } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/DataTypeReferences.cs b/src/Umbraco.Core/Models/ContentEditing/DataTypeReferences.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/DataTypeReferences.cs rename to src/Umbraco.Core/Models/ContentEditing/DataTypeReferences.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/DataTypeSave.cs b/src/Umbraco.Core/Models/ContentEditing/DataTypeSave.cs similarity index 99% rename from src/Umbraco.Infrastructure/Models/ContentEditing/DataTypeSave.cs rename to src/Umbraco.Core/Models/ContentEditing/DataTypeSave.cs index db4acd4c4e..aa916c7566 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/DataTypeSave.cs +++ b/src/Umbraco.Core/Models/ContentEditing/DataTypeSave.cs @@ -46,6 +46,5 @@ namespace Umbraco.Web.Models.ContentEditing /// [IgnoreDataMember] public IDataEditor PropertyEditor { get; set; } - } } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/DictionaryDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/DictionaryDisplay.cs similarity index 90% rename from src/Umbraco.Infrastructure/Models/ContentEditing/DictionaryDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/DictionaryDisplay.cs index 9e0dee36f6..8b8f53c21a 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/DictionaryDisplay.cs +++ b/src/Umbraco.Core/Models/ContentEditing/DictionaryDisplay.cs @@ -15,8 +15,8 @@ namespace Umbraco.Web.Models.ContentEditing /// public DictionaryDisplay() { - this.Notifications = new List(); - this.Translations = new List(); + Notifications = new List(); + Translations = new List(); } /// diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/DictionarySave.cs b/src/Umbraco.Core/Models/ContentEditing/DictionarySave.cs similarity index 91% rename from src/Umbraco.Infrastructure/Models/ContentEditing/DictionarySave.cs rename to src/Umbraco.Core/Models/ContentEditing/DictionarySave.cs index e54d1fab45..e99abd1f80 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/DictionarySave.cs +++ b/src/Umbraco.Core/Models/ContentEditing/DictionarySave.cs @@ -14,8 +14,8 @@ namespace Umbraco.Web.Models.ContentEditing /// Initializes a new instance of the class. /// public DictionarySave() - { - this.Translations = new List(); + { + Translations = new List(); } /// diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/DocumentTypeDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/DocumentTypeDisplay.cs similarity index 99% rename from src/Umbraco.Infrastructure/Models/ContentEditing/DocumentTypeDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/DocumentTypeDisplay.cs index 8aaa5c8af1..dd5818626a 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/DocumentTypeDisplay.cs +++ b/src/Umbraco.Core/Models/ContentEditing/DocumentTypeDisplay.cs @@ -30,6 +30,5 @@ namespace Umbraco.Web.Models.ContentEditing [DataMember(Name = "apps")] public IEnumerable ContentApps { get; set; } - } } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/DocumentTypeSave.cs b/src/Umbraco.Core/Models/ContentEditing/DocumentTypeSave.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/DocumentTypeSave.cs rename to src/Umbraco.Core/Models/ContentEditing/DocumentTypeSave.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/MacroDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/MacroDisplay.cs similarity index 93% rename from src/Umbraco.Infrastructure/Models/ContentEditing/MacroDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/MacroDisplay.cs index 33d2a959b6..55f0d5b89d 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/MacroDisplay.cs +++ b/src/Umbraco.Core/Models/ContentEditing/MacroDisplay.cs @@ -14,8 +14,8 @@ namespace Umbraco.Web.Models.ContentEditing /// public MacroDisplay() { - this.Notifications = new List(); - this.Parameters = new List(); + Notifications = new List(); + Parameters = new List(); } /// diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/MediaTypeDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/MediaTypeDisplay.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/MediaTypeDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/MediaTypeDisplay.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/MediaTypeSave.cs b/src/Umbraco.Core/Models/ContentEditing/MediaTypeSave.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/MediaTypeSave.cs rename to src/Umbraco.Core/Models/ContentEditing/MediaTypeSave.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/MemberGroupDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/MemberGroupDisplay.cs similarity index 88% rename from src/Umbraco.Infrastructure/Models/ContentEditing/MemberGroupDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/MemberGroupDisplay.cs index 7706514711..55239700a4 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/MemberGroupDisplay.cs +++ b/src/Umbraco.Core/Models/ContentEditing/MemberGroupDisplay.cs @@ -1,9 +1,8 @@ -using System.Runtime.Serialization; +using System.Collections.Generic; +using System.Runtime.Serialization; namespace Umbraco.Web.Models.ContentEditing { - using System.Collections.Generic; - [DataContract(Name = "memberGroup", Namespace = "")] public class MemberGroupDisplay : EntityBasic, INotificationModel { diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/MemberGroupSave.cs b/src/Umbraco.Core/Models/ContentEditing/MemberGroupSave.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/MemberGroupSave.cs rename to src/Umbraco.Core/Models/ContentEditing/MemberGroupSave.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/MemberTypeDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/MemberTypeDisplay.cs similarity index 99% rename from src/Umbraco.Infrastructure/Models/ContentEditing/MemberTypeDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/MemberTypeDisplay.cs index 26d06c5d1c..fdecbce57f 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/MemberTypeDisplay.cs +++ b/src/Umbraco.Core/Models/ContentEditing/MemberTypeDisplay.cs @@ -5,6 +5,5 @@ namespace Umbraco.Web.Models.ContentEditing [DataContract(Name = "contentType", Namespace = "")] public class MemberTypeDisplay : ContentTypeCompositionDisplay { - } } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/MemberTypeSave.cs b/src/Umbraco.Core/Models/ContentEditing/MemberTypeSave.cs similarity index 99% rename from src/Umbraco.Infrastructure/Models/ContentEditing/MemberTypeSave.cs rename to src/Umbraco.Core/Models/ContentEditing/MemberTypeSave.cs index be3d294714..b7def40e11 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/MemberTypeSave.cs +++ b/src/Umbraco.Core/Models/ContentEditing/MemberTypeSave.cs @@ -5,6 +5,5 @@ /// public class MemberTypeSave : ContentTypeSave { - } } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/RelationTypeDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/RelationTypeDisplay.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/RelationTypeDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/RelationTypeDisplay.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/RelationTypeSave.cs b/src/Umbraco.Core/Models/ContentEditing/RelationTypeSave.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/RelationTypeSave.cs rename to src/Umbraco.Core/Models/ContentEditing/RelationTypeSave.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/SearchResultEntity.cs b/src/Umbraco.Core/Models/ContentEditing/SearchResultEntity.cs similarity index 99% rename from src/Umbraco.Infrastructure/Models/ContentEditing/SearchResultEntity.cs rename to src/Umbraco.Core/Models/ContentEditing/SearchResultEntity.cs index a1cca9763d..45360d9464 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/SearchResultEntity.cs +++ b/src/Umbraco.Core/Models/ContentEditing/SearchResultEntity.cs @@ -10,6 +10,5 @@ namespace Umbraco.Web.Models.ContentEditing /// [DataMember(Name = "score")] public float Score { get; set; } - } } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/TreeSearchResult.cs b/src/Umbraco.Core/Models/ContentEditing/TreeSearchResult.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/TreeSearchResult.cs rename to src/Umbraco.Core/Models/ContentEditing/TreeSearchResult.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/UserBasic.cs b/src/Umbraco.Core/Models/ContentEditing/UserBasic.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/UserBasic.cs rename to src/Umbraco.Core/Models/ContentEditing/UserBasic.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/UserDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/UserDisplay.cs similarity index 98% rename from src/Umbraco.Infrastructure/Models/ContentEditing/UserDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/UserDisplay.cs index 35317d8dd5..312095e1d1 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/UserDisplay.cs +++ b/src/Umbraco.Core/Models/ContentEditing/UserDisplay.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.ComponentModel; -using System.Globalization; using System.Runtime.Serialization; namespace Umbraco.Web.Models.ContentEditing @@ -78,6 +77,5 @@ namespace Umbraco.Web.Models.ContentEditing [DataMember(Name = "updateDate")] [ReadOnly(true)] public DateTime UpdateDate { get; set; } - } } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/UserGroupBasic.cs b/src/Umbraco.Core/Models/ContentEditing/UserGroupBasic.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/UserGroupBasic.cs rename to src/Umbraco.Core/Models/ContentEditing/UserGroupBasic.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/UserGroupDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/UserGroupDisplay.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/UserGroupDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/UserGroupDisplay.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/UserGroupSave.cs b/src/Umbraco.Core/Models/ContentEditing/UserGroupSave.cs similarity index 98% rename from src/Umbraco.Infrastructure/Models/ContentEditing/UserGroupSave.cs rename to src/Umbraco.Core/Models/ContentEditing/UserGroupSave.cs index 4b76ec1bec..1b2bb710a2 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/UserGroupSave.cs +++ b/src/Umbraco.Core/Models/ContentEditing/UserGroupSave.cs @@ -2,9 +2,7 @@ using System.ComponentModel.DataAnnotations; using System.Linq; using System.Runtime.Serialization; -using Newtonsoft.Json; using Umbraco.Core; -using Umbraco.Core.Models; using Umbraco.Core.Models.Membership; namespace Umbraco.Web.Models.ContentEditing @@ -74,7 +72,6 @@ namespace Umbraco.Web.Models.ContentEditing yield return new ValidationResult("A permission value cannot be null or empty", new[] { "AssignedPermissions" }); } } - } } } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/UserInvite.cs b/src/Umbraco.Core/Models/ContentEditing/UserInvite.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/UserInvite.cs rename to src/Umbraco.Core/Models/ContentEditing/UserInvite.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/UserSave.cs b/src/Umbraco.Core/Models/ContentEditing/UserSave.cs similarity index 98% rename from src/Umbraco.Infrastructure/Models/ContentEditing/UserSave.cs rename to src/Umbraco.Core/Models/ContentEditing/UserSave.cs index 6f9fea68d5..2533ebb105 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/UserSave.cs +++ b/src/Umbraco.Core/Models/ContentEditing/UserSave.cs @@ -2,7 +2,6 @@ using System.ComponentModel.DataAnnotations; using System.Linq; using System.Runtime.Serialization; -using Newtonsoft.Json; namespace Umbraco.Web.Models.ContentEditing { diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentItemDisplay.cs b/src/Umbraco.Infrastructure/Models/ContentEditing/ContentItemDisplay.cs index 89a71a0e2f..5840a4df19 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentItemDisplay.cs +++ b/src/Umbraco.Infrastructure/Models/ContentEditing/ContentItemDisplay.cs @@ -1,5 +1,4 @@ -using Newtonsoft.Json; -using System; +using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; @@ -7,7 +6,6 @@ using System.Runtime.Serialization; using Umbraco.Core; using Umbraco.Core.Models; using Umbraco.Core.Models.ContentEditing; -using Umbraco.Core.Serialization; using Umbraco.Web.Routing; namespace Umbraco.Web.Models.ContentEditing @@ -33,7 +31,6 @@ namespace Umbraco.Web.Models.ContentEditing [DataMember(Name = "udi")] [ReadOnly(true)] - [JsonConverter(typeof(UdiJsonConverter))] public Udi Udi { get; set; } [DataMember(Name = "icon")] @@ -151,7 +148,7 @@ namespace Umbraco.Web.Models.ContentEditing /// /// By default this is true but by using events developers can toggle this off for certain documents if there is nothing to preview /// - [DataMember( Name = "allowPreview" )] + [DataMember(Name = "allowPreview")] public bool AllowPreview { get; set; } /// diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentItemDisplayBase.cs b/src/Umbraco.Infrastructure/Models/ContentEditing/ContentItemDisplayBase.cs index e0beae7fce..98f898aeea 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentItemDisplayBase.cs +++ b/src/Umbraco.Infrastructure/Models/ContentEditing/ContentItemDisplayBase.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using System.ComponentModel; using System.Runtime.Serialization; -using Umbraco.Core.Models; namespace Umbraco.Web.Models.ContentEditing { diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentVariationDisplay.cs b/src/Umbraco.Infrastructure/Models/ContentEditing/ContentVariationDisplay.cs index cb1834980e..47ede6ebce 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentVariationDisplay.cs +++ b/src/Umbraco.Infrastructure/Models/ContentEditing/ContentVariationDisplay.cs @@ -2,7 +2,6 @@ using System; using System.Collections.Generic; using System.ComponentModel; -using System.ComponentModel.DataAnnotations; using System.Linq; using System.Runtime.Serialization; using Newtonsoft.Json.Converters; @@ -38,7 +37,7 @@ namespace Umbraco.Web.Models.ContentEditing /// [IgnoreDataMember] [JsonIgnore] - IEnumerable IContentProperties.Properties => Tabs.SelectMany(x => x.Properties); + IEnumerable IContentProperties.Properties => Tabs.SelectMany(x => x.Properties); /// /// The language/culture assigned to this content variation diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/TabbedContentItem.cs b/src/Umbraco.Infrastructure/Models/ContentEditing/TabbedContentItem.cs index 4c958656ef..db7d1df7bc 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/TabbedContentItem.cs +++ b/src/Umbraco.Infrastructure/Models/ContentEditing/TabbedContentItem.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using Newtonsoft.Json; -using Umbraco.Core.Models; namespace Umbraco.Web.Models.ContentEditing { From 0a0561182602a8706c23894dec3d5a6558a34f5c Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Thu, 29 Oct 2020 14:08:01 +0100 Subject: [PATCH 20/56] Migrated ScopedRepositoryTests Signed-off-by: Bjarke Berg --- .../Testing/UmbracoIntegrationTest.cs | 8 +- .../Scoping/ScopedRepositoryTests.cs | 88 ++++++++----------- src/Umbraco.Tests/Umbraco.Tests.csproj | 1 - 3 files changed, 43 insertions(+), 54 deletions(-) rename src/{Umbraco.Tests => Umbraco.Tests.Integration/Umbraco.Infrastructure}/Scoping/ScopedRepositoryTests.cs (82%) diff --git a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs index 3430644795..d089c4a4e9 100644 --- a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs +++ b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs @@ -263,7 +263,7 @@ namespace Umbraco.Tests.Integration.Testing webHostEnvironment, register, GetType().Assembly, - AppCaches.NoCache, // Disable caches for integration tests + GetAppCaches(), TestHelper.GetLoggingConfiguration(), Configuration, CreateTestRuntime); @@ -280,6 +280,12 @@ namespace Umbraco.Tests.Integration.Testing CustomTestSetup(services); } + protected virtual AppCaches GetAppCaches() + { + // Disable caches for integration tests + return AppCaches.NoCache; + } + public virtual void Configure(IApplicationBuilder app) { //get the currently set options diff --git a/src/Umbraco.Tests/Scoping/ScopedRepositoryTests.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopedRepositoryTests.cs similarity index 82% rename from src/Umbraco.Tests/Scoping/ScopedRepositoryTests.cs rename to src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopedRepositoryTests.cs index 7bffbbe2ed..41f80fc0c3 100644 --- a/src/Umbraco.Tests/Scoping/ScopedRepositoryTests.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopedRepositoryTests.cs @@ -1,64 +1,49 @@ using System; using System.Collections.Generic; using System.Linq; -using Moq; -using NUnit.Framework; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Logging; -using Umbraco.Core; +using NUnit.Framework; using Umbraco.Core.Cache; -using Umbraco.Core.Configuration.Models; using Umbraco.Core.Events; using Umbraco.Core.Models; using Umbraco.Core.Models.Membership; using Umbraco.Core.Scoping; +using Umbraco.Core.Services; +using Umbraco.Core.Services.Implement; using Umbraco.Core.Sync; -using Umbraco.Tests.Common.Builders; -using Umbraco.Tests.TestHelpers; +using Umbraco.Tests.Integration.Testing; using Umbraco.Tests.Testing; using Umbraco.Web; using Umbraco.Web.Cache; -using Umbraco.Web.Composing; -namespace Umbraco.Tests.Scoping +namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Scoping { [TestFixture] - [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest, WithApplication = true)] - public class ScopedRepositoryTests : TestWithDatabaseBase + [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest)] + public class ScopedRepositoryTests : UmbracoIntegrationTest { private DistributedCacheBinder _distributedCacheBinder; - private GlobalSettings _globalSettings; + private IUserService UserService => GetRequiredService(); + private ILocalizationService LocalizationService => GetRequiredService(); + private IServerMessenger ServerMessenger => GetRequiredService(); + private CacheRefresherCollection CacheRefresherCollection => GetRequiredService(); - public override void SetUp() - { - base.SetUp(); - - _globalSettings = new GlobalSettings(); - } - - protected override void Compose() - { - base.Compose(); - - // the cache refresher component needs to trigger to refresh caches - // but then, it requires a lot of plumbing ;( - // FIXME: and we cannot inject a DistributedCache yet - // so doing all this mess - Composition.RegisterUnique(); - Composition.RegisterUnique(f => Mock.Of()); - Composition.WithCollectionBuilder() - .Add(() => Composition.TypeLoader.GetCacheRefreshers()); - } + protected override Action CustomTestSetup => (services) + => services.Replace(ServiceDescriptor.Singleton(typeof(IServerMessenger), typeof(LocalServerMessenger))); protected override AppCaches GetAppCaches() { // this is what's created core web runtime - return new AppCaches( + var result = new AppCaches( new DeepCloneAppCache(new ObjectCacheAppCache()), NoAppCache.Instance, new IsolatedCaches(type => new DeepCloneAppCache(new ObjectCacheAppCache()))); - } + return result; + } [TearDown] public void Teardown() { @@ -70,11 +55,10 @@ namespace Umbraco.Tests.Scoping [TestCase(false)] public void DefaultRepositoryCachePolicy(bool complete) { - var scopeProvider = ScopeProvider; - var service = ServiceContext.UserService; - var globalCache = Current.AppCaches.IsolatedCaches.GetOrCreate(typeof(IUser)); - - var user = (IUser)new User(_globalSettings, "name", "email", "username", "rawPassword"); + var scopeProvider = (ScopeProvider)ScopeProvider; + var service = (UserService)UserService; + var globalCache = AppCaches.IsolatedCaches.GetOrCreate(typeof(IUser)); + var user = (IUser)new User(GlobalSettings, "name", "email", "username", "rawPassword"); service.Save(user); // global cache contains the entity @@ -86,13 +70,13 @@ namespace Umbraco.Tests.Scoping // get user again - else we'd modify the one that's in the cache user = service.GetUserById(user.Id); - _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(Current.ServerMessenger, Current.CacheRefreshers), Mock.Of(), Mock.Of>()); + _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(ServerMessenger, CacheRefresherCollection), GetRequiredService(), GetRequiredService>()); _distributedCacheBinder.BindEvents(true); Assert.IsNull(scopeProvider.AmbientScope); using (var scope = scopeProvider.CreateScope(repositoryCacheMode: RepositoryCacheMode.Scoped)) { - Assert.IsInstanceOf(scope); + Assert.IsInstanceOf(scope); Assert.IsNotNull(scopeProvider.AmbientScope); Assert.AreSame(scope, scopeProvider.AmbientScope); @@ -147,11 +131,11 @@ namespace Umbraco.Tests.Scoping [TestCase(false)] public void FullDataSetRepositoryCachePolicy(bool complete) { - var scopeProvider = ScopeProvider; - var service = ServiceContext.LocalizationService; - var globalCache = Current.AppCaches.IsolatedCaches.GetOrCreate(typeof (ILanguage)); + var scopeProvider = (ScopeProvider)ScopeProvider; + var service = LocalizationService; + var globalCache = AppCaches.IsolatedCaches.GetOrCreate(typeof (ILanguage)); - var lang = (ILanguage) new Language(_globalSettings, "fr-FR"); + var lang = (ILanguage) new Language(GlobalSettings, "fr-FR"); service.Save(lang); // global cache has been flushed, reload @@ -167,13 +151,13 @@ namespace Umbraco.Tests.Scoping Assert.AreEqual(lang.Id, globalCached.Id); Assert.AreEqual("fr-FR", globalCached.IsoCode); - _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(Current.ServerMessenger, Current.CacheRefreshers), Mock.Of(), Mock.Of>()); + _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(ServerMessenger, CacheRefresherCollection), GetRequiredService(), GetRequiredService>()); _distributedCacheBinder.BindEvents(true); Assert.IsNull(scopeProvider.AmbientScope); using (var scope = scopeProvider.CreateScope(repositoryCacheMode: RepositoryCacheMode.Scoped)) { - Assert.IsInstanceOf(scope); + Assert.IsInstanceOf(scope); Assert.IsNotNull(scopeProvider.AmbientScope); Assert.AreSame(scope, scopeProvider.AmbientScope); @@ -239,11 +223,11 @@ namespace Umbraco.Tests.Scoping [TestCase(false)] public void SingleItemsOnlyRepositoryCachePolicy(bool complete) { - var scopeProvider = ScopeProvider; - var service = ServiceContext.LocalizationService; - var globalCache = Current.AppCaches.IsolatedCaches.GetOrCreate(typeof (IDictionaryItem)); + var scopeProvider = (ScopeProvider)ScopeProvider; + var service = LocalizationService; + var globalCache = AppCaches.IsolatedCaches.GetOrCreate(typeof (IDictionaryItem)); - var lang = (ILanguage)new Language(_globalSettings, "fr-FR"); + var lang = (ILanguage)new Language(GlobalSettings, "fr-FR"); service.Save(lang); var item = (IDictionaryItem) new DictionaryItem("item-key"); @@ -259,13 +243,13 @@ namespace Umbraco.Tests.Scoping Assert.AreEqual(item.Id, globalCached.Id); Assert.AreEqual("item-key", globalCached.ItemKey); - _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(Current.ServerMessenger, Current.CacheRefreshers), Mock.Of(), Mock.Of>()); + _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(ServerMessenger, CacheRefresherCollection), GetRequiredService(), GetRequiredService>()); _distributedCacheBinder.BindEvents(true); Assert.IsNull(scopeProvider.AmbientScope); using (var scope = scopeProvider.CreateScope(repositoryCacheMode: RepositoryCacheMode.Scoped)) { - Assert.IsInstanceOf(scope); + Assert.IsInstanceOf(scope); Assert.IsNotNull(scopeProvider.AmbientScope); Assert.AreSame(scope, scopeProvider.AmbientScope); diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 7c2214a0ed..8ef268d214 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -175,7 +175,6 @@ - From 82a0c50a98034589076b6aa40b33a7b30d7519fa Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Thu, 29 Oct 2020 21:05:50 +0100 Subject: [PATCH 21/56] Temp fix for test Signed-off-by: Bjarke Berg --- .../Umbraco.Infrastructure/Scoping/ScopedRepositoryTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopedRepositoryTests.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopedRepositoryTests.cs index 41f80fc0c3..6dd0d58a75 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopedRepositoryTests.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopedRepositoryTests.cs @@ -127,6 +127,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Scoping Assert.AreEqual(complete ? "changed" : "name", globalCached.Name); } + [Explicit("Current having issues if RuntimeTests.cs is running in same session")] [TestCase(true)] [TestCase(false)] public void FullDataSetRepositoryCachePolicy(bool complete) From 4ae329589a52c55e615fb4291919adb48dd0c040 Mon Sep 17 00:00:00 2001 From: Paul Johnson Date: Fri, 30 Oct 2020 11:16:17 +0000 Subject: [PATCH 22/56] NetCore: MSDI refactor remove IFactory & IRegister (#9308) * Replace IFactory with IServiceProvider * Replace IRegister with IServiceCollection * Fix Rte.cshtml so the view can service locate. * Replace Composing Lifetime with MSDI ServiceLifetime * Remove ServiceProvider AddMultipleUnique extension * Remove Umbraco.Web.Composing.Current.Reset and any calls * Remove LightInject from net framework projects * Brought back a helper for setting MediaFileSystem underlying IFileSystem --- .../Actions/ActionCollectionBuilder.cs | 2 +- .../Composing/CollectionBuilderBase.cs | 19 +- .../Composing/ComponentCollectionBuilder.cs | 5 +- src/Umbraco.Core/Composing/Composition.cs | 92 +--------- .../Composing/CompositionExtensions.cs | 10 +- .../Composing/ICollectionBuilder.cs | 9 +- src/Umbraco.Core/Composing/IFactory.cs | 56 ------ src/Umbraco.Core/Composing/IRegister.cs | 40 ----- src/Umbraco.Core/Composing/LazyResolve.cs | 13 ++ src/Umbraco.Core/Composing/Lifetime.cs | 80 --------- .../ServiceCollectionRegistryAdapter.cs | 97 ---------- .../ServiceProviderFactoryAdapter.cs | 49 ----- .../Composing/TypeCollectionBuilderBase.cs | 7 +- .../CompositionExtensions_Uniques.cs | 43 ----- .../ContentAppFactoryCollectionBuilder.cs | 8 +- .../Dashboards/DashboardCollectionBuilder.cs | 3 +- src/Umbraco.Core/FactoryExtensions.cs | 105 ----------- .../HeathCheckCollectionBuilder.cs | 5 +- src/Umbraco.Core/IO/FileSystems.cs | 6 +- .../ManifestFilterCollectionBuilder.cs | 7 +- .../Mapping/MapDefinitionCollectionBuilder.cs | 5 +- src/Umbraco.Core/RegisterExtensions.cs | 30 ---- .../Sections/SectionCollectionBuilder.cs | 7 +- .../ServiceCollectionExtensions.cs | 47 +++++ src/Umbraco.Core/ServiceProviderExtensions.cs | 86 +++++++++ .../Tour/TourFilterCollectionBuilder.cs | 2 +- .../ExamineLuceneComposer.cs | 8 +- .../Cache/DistributedCacheBinderComposer.cs | 2 +- ...aseServerRegistrarAndMessengerComponent.cs | 3 +- .../Compose/NotificationsComposer.cs | 2 +- .../CoreMappingProfiles.cs | 2 +- .../CompositionExtensions/FileSystems.cs | 25 ++- .../CompositionExtensions/Installer.cs | 2 +- .../CompositionExtensions/Repositories.cs | 78 ++++---- .../CompositionExtensions/Services.cs | 87 ++++----- .../CompositionExtensions.cs | 82 +++++---- .../CompositionExtensions_Essentials.cs | 39 ++-- .../Logging/Serilog/SerilogComposer.cs | 8 +- .../Logging/Viewer/LogViewerComposer.cs | 5 +- .../Migrations/MigrationBuilder.cs | 4 +- .../Mappers/MapperCollectionBuilder.cs | 9 +- .../Runtime/CoreInitialComposer.cs | 120 ++++++------- .../Runtime/CoreRuntime.cs | 3 +- .../Search/ExamineComposer.cs | 14 +- .../Search/SearchableTreeCollectionBuilder.cs | 5 +- .../WebAssets/WebAssetsComposer.cs | 2 +- .../Compose/ModelsBuilderComposer.cs | 12 +- .../NuCacheComposer.cs | 4 +- src/Umbraco.TestData/LoadTestController.cs | 3 +- src/Umbraco.Tests.Common/TestHelperBase.cs | 5 +- src/Umbraco.Tests.Integration/RuntimeTests.cs | 34 ++-- .../UmbracoBuilderExtensions.cs | 4 - .../Testing/IntegrationTestComposer.cs | 17 +- .../Testing/UmbracoIntegrationTest.cs | 5 +- .../Services/ContentEventsTests.cs | 2 +- .../Filters/ContentModelValidatorTests.cs | 8 +- .../TestHelpers/BaseUsingSqlSyntax.cs | 5 +- .../TestHelpers/CompositionExtenions.cs | 18 -- .../TestHelpers/CompositionExtensions.cs | 16 ++ .../TestHelpers/TestHelper.cs | 2 +- .../Umbraco.Core/Components/ComponentTests.cs | 26 +-- .../Composing/CollectionBuildersTests.cs | 76 ++++---- .../Composing/LazyCollectionBuilderTests.cs | 12 +- .../Composing/PackageActionCollectionTests.cs | 3 +- .../Cache/DistributedCacheBinderTests.cs | 3 +- .../PublishedContentCacheTests.cs | 1 + .../PublishedMediaCacheTests.cs | 1 + src/Umbraco.Tests/IO/FileSystemsTests.cs | 25 ++- src/Umbraco.Tests/IO/ShadowFileSystemTests.cs | 6 +- src/Umbraco.Tests/Issues/U9560.cs | 1 + src/Umbraco.Tests/Models/ContentXmlTest.cs | 1 + src/Umbraco.Tests/Models/MediaXmlTest.cs | 1 + .../Packaging/PackageDataInstallationTests.cs | 1 + .../Packaging/PackageInstallationTest.cs | 1 + .../Published/ConvertersTests.cs | 10 +- .../PublishedContent/NuCacheChildrenTests.cs | 9 +- .../PublishedContent/NuCacheTests.cs | 10 +- .../PublishedContentLanguageVariantTests.cs | 3 +- .../PublishedContentSnapshotTestBase.cs | 10 +- .../PublishedContentTestBase.cs | 1 + .../PublishedContent/PublishedContentTests.cs | 11 +- .../PublishedContent/PublishedMediaTests.cs | 3 +- .../Routing/BaseUrlProviderTest.cs | 4 +- .../Routing/ContentFinderByIdTests.cs | 3 +- .../Routing/RenderRouteHandlerTests.cs | 7 +- ...oviderWithHideTopLevelNodeFromPathTests.cs | 3 +- ...derWithoutHideTopLevelNodeFromPathTests.cs | 3 +- .../Routing/UrlRoutingTestBase.cs | 2 +- .../Routing/UrlsProviderWithDomainsTests.cs | 2 +- .../Routing/UrlsWithNestedDomains.cs | 2 +- .../Runtimes/CoreRuntimeTests.cs | 11 +- .../Scoping/ScopeEventDispatcherTests.cs | 21 +-- .../Scoping/ScopedNuCacheTests.cs | 5 +- src/Umbraco.Tests/Scoping/ScopedXmlTests.cs | 11 +- .../TestHelpers/BaseUsingSqlCeSyntax.cs | 28 +-- src/Umbraco.Tests/TestHelpers/BaseWebTest.cs | 9 +- .../Stubs/TestControllerFactory.cs | 1 + src/Umbraco.Tests/TestHelpers/TestHelper.cs | 3 +- .../TestHelpers/TestObjects-Mocks.cs | 5 +- src/Umbraco.Tests/TestHelpers/TestObjects.cs | 9 +- .../TestHelpers/TestWithDatabaseBase.cs | 6 +- .../Testing/TestingTests/MockTests.cs | 8 +- src/Umbraco.Tests/Testing/UmbracoTestBase.cs | 167 +++++++++--------- src/Umbraco.Tests/Umbraco.Tests.csproj | 6 +- .../UmbracoExamine/EventsTest.cs | 7 +- .../UmbracoExamine/ExamineBaseTest.cs | 3 +- src/Umbraco.Tests/UmbracoExamine/IndexTest.cs | 1 + .../UmbracoExamine/SearchTests.cs | 1 + .../AuthenticationControllerTests.cs | 6 +- src/Umbraco.Tests/Web/UmbracoHelperTests.cs | 49 ----- .../Runtime/BackOfficeComposer.cs | 16 +- .../Trees/TreeCollectionBuilder.cs | 6 +- .../Builder/UmbracoBuilderExtensions.cs | 3 + .../Extensions/CompositionExtensions.cs | 3 +- .../UmbracoCoreServiceCollectionExtensions.cs | 18 +- .../Profiler/WebProfilerComposer.cs | 2 +- .../Runtime/AspNetCoreBootFailedComposer.cs | 2 +- .../Runtime/AspNetCoreComposer.cs | 51 +++--- .../RuntimeMinification/SmidgeComposer.cs | 6 +- .../Views/Partials/Grid/Editors/Rte.cshtml | 7 + src/Umbraco.Web/Composing/Current.cs | 38 +--- src/Umbraco.Web/Composing/ModuleInjector.cs | 1 + src/Umbraco.Web/CompositionExtensions.cs | 26 +-- .../EnsurePublishedContentRequestAttribute.cs | 1 + src/Umbraco.Web/Mvc/PluginController.cs | 1 + src/Umbraco.Web/Mvc/RenderRouteHandler.cs | 1 + .../Mvc/UmbracoViewPageOfTModel.cs | 1 + .../Mvc/UmbracoVirtualNodeRouteHandler.cs | 1 + src/Umbraco.Web/PublishedContentExtensions.cs | 1 + src/Umbraco.Web/Runtime/WebInitialComposer.cs | 16 +- src/Umbraco.Web/Umbraco.Web.csproj | 7 - src/Umbraco.Web/UmbracoApplicationBase.cs | 9 +- src/Umbraco.Web/UmbracoDefaultOwinStartup.cs | 1 + .../Filters/FeatureAuthorizeAttribute.cs | 1 + .../WebApi/HttpActionContextExtensions.cs | 1 + .../WebApi/UmbracoApiControllerBase.cs | 1 + .../WebAssets/CDF/ClientDependencyComposer.cs | 2 +- 137 files changed, 895 insertions(+), 1394 deletions(-) delete mode 100644 src/Umbraco.Core/Composing/IFactory.cs delete mode 100644 src/Umbraco.Core/Composing/IRegister.cs create mode 100644 src/Umbraco.Core/Composing/LazyResolve.cs delete mode 100644 src/Umbraco.Core/Composing/Lifetime.cs delete mode 100644 src/Umbraco.Core/Composing/ServiceCollectionRegistryAdapter.cs delete mode 100644 src/Umbraco.Core/Composing/ServiceProviderFactoryAdapter.cs delete mode 100644 src/Umbraco.Core/CompositionExtensions_Uniques.cs delete mode 100644 src/Umbraco.Core/FactoryExtensions.cs delete mode 100644 src/Umbraco.Core/RegisterExtensions.cs create mode 100644 src/Umbraco.Core/ServiceCollectionExtensions.cs create mode 100644 src/Umbraco.Core/ServiceProviderExtensions.cs delete mode 100644 src/Umbraco.Tests.UnitTests/TestHelpers/CompositionExtenions.cs create mode 100644 src/Umbraco.Tests.UnitTests/TestHelpers/CompositionExtensions.cs delete mode 100644 src/Umbraco.Tests/Web/UmbracoHelperTests.cs diff --git a/src/Umbraco.Core/Actions/ActionCollectionBuilder.cs b/src/Umbraco.Core/Actions/ActionCollectionBuilder.cs index eaea63b3a3..1fe3008610 100644 --- a/src/Umbraco.Core/Actions/ActionCollectionBuilder.cs +++ b/src/Umbraco.Core/Actions/ActionCollectionBuilder.cs @@ -8,7 +8,7 @@ namespace Umbraco.Web.Actions { protected override ActionCollectionBuilder This => this; - protected override IEnumerable CreateItems(IFactory factory) + protected override IEnumerable CreateItems(IServiceProvider factory) { var items = base.CreateItems(factory).ToList(); diff --git a/src/Umbraco.Core/Composing/CollectionBuilderBase.cs b/src/Umbraco.Core/Composing/CollectionBuilderBase.cs index 2b47ba2a86..1c4de6cd8e 100644 --- a/src/Umbraco.Core/Composing/CollectionBuilderBase.cs +++ b/src/Umbraco.Core/Composing/CollectionBuilderBase.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.DependencyInjection; namespace Umbraco.Core.Composing { @@ -24,22 +25,22 @@ namespace Umbraco.Core.Composing public IEnumerable GetTypes() => _types; /// - public virtual void RegisterWith(IRegister register) + public virtual void RegisterWith(IServiceCollection services) { if (_registeredTypes != null) throw new InvalidOperationException("This builder has already been registered."); // register the collection - register.Register(CreateCollection, CollectionLifetime); + services.Add(new ServiceDescriptor(typeof(TCollection), CreateCollection, CollectionLifetime)); // register the types - RegisterTypes(register); + RegisterTypes(services); } /// /// Gets the collection lifetime. /// - protected virtual Lifetime CollectionLifetime => Lifetime.Singleton; + protected virtual ServiceLifetime CollectionLifetime => ServiceLifetime.Singleton; /// /// Configures the internal list of types. @@ -67,7 +68,7 @@ namespace Umbraco.Core.Composing return types; } - private void RegisterTypes(IRegister register) + private void RegisterTypes(IServiceCollection services) { lock (_locker) { @@ -84,7 +85,7 @@ namespace Umbraco.Core.Composing // was a dependency on an individual item, it would resolve a brand new transient instance which isn't what // we would expect to happen. The same item should be resolved from the container as the collection. foreach (var type in types) - register.Register(type, CollectionLifetime); + services.Add(new ServiceDescriptor(type, type, CollectionLifetime)); _registeredTypes = types; } @@ -94,7 +95,7 @@ namespace Umbraco.Core.Composing /// Creates the collection items. /// /// The collection items. - protected virtual IEnumerable CreateItems(IFactory factory) + protected virtual IEnumerable CreateItems(IServiceProvider factory) { if (_registeredTypes == null) throw new InvalidOperationException("Cannot create items before the collection builder has been registered."); @@ -107,7 +108,7 @@ namespace Umbraco.Core.Composing /// /// Creates a collection item. /// - protected virtual TItem CreateItem(IFactory factory, Type itemType) + protected virtual TItem CreateItem(IServiceProvider factory, Type itemType) => (TItem) factory.GetRequiredService(itemType); /// @@ -115,7 +116,7 @@ namespace Umbraco.Core.Composing /// /// A collection. /// Creates a new collection each time it is invoked. - public virtual TCollection CreateCollection(IFactory factory) + public virtual TCollection CreateCollection(IServiceProvider factory) { return factory.CreateInstance( CreateItems(factory)); } diff --git a/src/Umbraco.Core/Composing/ComponentCollectionBuilder.cs b/src/Umbraco.Core/Composing/ComponentCollectionBuilder.cs index 05e627b41e..903e2199e7 100644 --- a/src/Umbraco.Core/Composing/ComponentCollectionBuilder.cs +++ b/src/Umbraco.Core/Composing/ComponentCollectionBuilder.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core.Logging; namespace Umbraco.Core.Composing @@ -18,7 +19,7 @@ namespace Umbraco.Core.Composing protected override ComponentCollectionBuilder This => this; - protected override IEnumerable CreateItems(IFactory factory) + protected override IEnumerable CreateItems(IServiceProvider factory) { _logger = factory.GetRequiredService(); @@ -28,7 +29,7 @@ namespace Umbraco.Core.Composing } } - protected override IComponent CreateItem(IFactory factory, Type itemType) + protected override IComponent CreateItem(IServiceProvider factory, Type itemType) { using (_logger.DebugDuration($"Creating {itemType.FullName}.", $"Created {itemType.FullName}.", thresholdMilliseconds: LogThresholdMilliseconds)) { diff --git a/src/Umbraco.Core/Composing/Composition.cs b/src/Umbraco.Core/Composing/Composition.cs index 66e6e03e8e..fcadf7dd1b 100644 --- a/src/Umbraco.Core/Composing/Composition.cs +++ b/src/Umbraco.Core/Composing/Composition.cs @@ -1,14 +1,9 @@ using System; using System.Collections.Generic; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.DependencyInjection.Extensions; using Umbraco.Core.Cache; -using Umbraco.Core.Configuration; using Umbraco.Core.IO; using Umbraco.Core.Logging; -using Umbraco.Infrastructure.Composing; - -using NoFactory = Umbraco.Infrastructure.Composing.ServiceProviderFactoryAdapter; namespace Umbraco.Core.Composing { @@ -22,8 +17,14 @@ namespace Umbraco.Core.Composing /// may cause issues. public class Composition { + public TypeLoader TypeLoader { get; } + public IRuntimeState RuntimeState { get; } + public IProfilingLogger Logger { get; } + public IIOHelper IOHelper { get; } + public AppCaches AppCaches { get; } + public IServiceCollection Services { get; } + private readonly Dictionary _builders = new Dictionary(); - private IRegister _register => ServiceCollectionRegistryAdapter.Wrap(Services); public Composition(IServiceCollection services, TypeLoader typeLoader, IProfilingLogger logger, IRuntimeState runtimeState, IIOHelper ioHelper, AppCaches appCaches) { @@ -35,88 +36,13 @@ namespace Umbraco.Core.Composing AppCaches = appCaches ?? throw new ArgumentNullException(nameof(appCaches)); } - #region Services - - /// - /// Gets the logger. - /// - public IProfilingLogger Logger { get; } - - public IIOHelper IOHelper { get; } - public AppCaches AppCaches { get; } - - public IServiceCollection Services { get; } - - /// - /// Gets the type loader. - /// - public TypeLoader TypeLoader { get; } - - /// - /// Gets the runtime state. - /// - public IRuntimeState RuntimeState { get; } - - #endregion - - #region IRegister - - /// - public void Register(Type serviceType, Lifetime lifetime = Lifetime.Transient) - => _register.Register(serviceType, lifetime); - - /// - public void Register(Type serviceType, Type implementingType, Lifetime lifetime = Lifetime.Transient) - => _register.Register(serviceType, implementingType, lifetime); - - /// - public void Register(Func factory, Lifetime lifetime = Lifetime.Transient) - where TService : class - => _register.Register(factory, lifetime); - - /// - public void Register(Type serviceType, object instance) - => _register.Register(serviceType, instance); - - - /// public void RegisterBuilders() { foreach (var builder in _builders.Values) - builder.RegisterWith(_register); + builder.RegisterWith(Services); _builders.Clear(); // no point keep them around } - #endregion - - #region Unique - - /// - /// Registers a unique service with an implementation type. - /// - /// Unique services have one single implementation, and a Singleton lifetime. - public void RegisterUnique(Type serviceType, Type implementingType) - => Services.Replace(ServiceDescriptor.Singleton(serviceType, implementingType)); - - /// - /// Registers a unique service with an implementation factory. - /// - /// Unique services have one single implementation, and a Singleton lifetime. - public void RegisterUnique(Func factory) - where TService : class - => Services.Replace(ServiceDescriptor.Singleton(sp => factory(NoFactory.Wrap(sp)))); - - /// - /// Registers a unique service with an implementing instance. - /// - /// Unique services have one single implementation, and a Singleton lifetime. - public void RegisterUnique(Type serviceType, object instance) - => Services.Replace(ServiceDescriptor.Singleton(serviceType, instance)); - - #endregion - - #region Collection Builders - /// /// Gets a collection builder (and registers the collection). /// @@ -134,7 +60,5 @@ namespace Umbraco.Core.Composing _builders[typeOfBuilder] = builder; return builder; } - - #endregion } } diff --git a/src/Umbraco.Core/Composing/CompositionExtensions.cs b/src/Umbraco.Core/Composing/CompositionExtensions.cs index 262c2a903c..b3dc4301c3 100644 --- a/src/Umbraco.Core/Composing/CompositionExtensions.cs +++ b/src/Umbraco.Core/Composing/CompositionExtensions.cs @@ -12,9 +12,9 @@ namespace Umbraco.Infrastructure.PublishedCache /// /// The composition. /// A function creating a published snapshot service. - public static void SetPublishedSnapshotService(this Composition composition, Func factory) + public static void SetPublishedSnapshotService(this Composition composition, Func factory) { - composition.RegisterUnique(factory); + composition.Services.AddUnique(factory); } /// @@ -23,9 +23,9 @@ namespace Umbraco.Infrastructure.PublishedCache /// The type of the published snapshot service. /// The composition. public static void SetPublishedSnapshotService(this Composition composition) - where T : IPublishedSnapshotService + where T : class, IPublishedSnapshotService { - composition.RegisterUnique(); + composition.Services.AddUnique(); } /// @@ -35,7 +35,7 @@ namespace Umbraco.Infrastructure.PublishedCache /// A published snapshot service. public static void SetPublishedSnapshotService(this Composition composition, IPublishedSnapshotService service) { - composition.RegisterUnique(_ => service); + composition.Services.AddUnique(_ => service); } } } diff --git a/src/Umbraco.Core/Composing/ICollectionBuilder.cs b/src/Umbraco.Core/Composing/ICollectionBuilder.cs index 84ff3ba747..a48d06d2dd 100644 --- a/src/Umbraco.Core/Composing/ICollectionBuilder.cs +++ b/src/Umbraco.Core/Composing/ICollectionBuilder.cs @@ -1,4 +1,7 @@ -namespace Umbraco.Core.Composing +using System; +using Microsoft.Extensions.DependencyInjection; + +namespace Umbraco.Core.Composing { /// /// Represents a collection builder. @@ -9,7 +12,7 @@ /// Registers the builder so it can build the collection, by /// registering the collection and the types. /// - void RegisterWith(IRegister register); + void RegisterWith(IServiceCollection services); } /// @@ -25,6 +28,6 @@ /// /// A collection. /// Creates a new collection each time it is invoked. - TCollection CreateCollection(IFactory factory); + TCollection CreateCollection(IServiceProvider factory); } } diff --git a/src/Umbraco.Core/Composing/IFactory.cs b/src/Umbraco.Core/Composing/IFactory.cs deleted file mode 100644 index 7a2af7756e..0000000000 --- a/src/Umbraco.Core/Composing/IFactory.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Umbraco.Core.Composing -{ - /// - /// Defines a service factory for Umbraco. - /// - public interface IFactory - { - /// - /// Gets the concrete factory. - /// - object Concrete { get; } - - /// - /// Gets an instance of a service. - /// - /// The type of the service. - /// An instance of the specified type. - /// Throws an exception if the container failed to get an instance of the specified type. - object GetRequiredService(Type type); - - /// - /// Tries to get an instance of a service. - /// - /// The type of the service. - /// An instance of the specified type, or null. - /// Returns null if the container does not know how to get an instance - /// of the specified type. Throws an exception if the container does know how - /// to get an instance of the specified type, but failed to do so. - object GetService(Type type); - - /// - /// Gets all instances of a service. - /// - /// The type of the service. - IEnumerable GetServices(Type serviceType); - - /// - /// Gets all instances of a service. - /// - /// The type of the service. - IEnumerable GetServices() - where TService : class; - - /// - /// Begins a scope. - /// - /// - /// When the scope is disposed, scoped instances that have been created during the scope are disposed. - /// Scopes can be nested. Each instance is disposed individually. - /// - IDisposable BeginScope(); - } -} diff --git a/src/Umbraco.Core/Composing/IRegister.cs b/src/Umbraco.Core/Composing/IRegister.cs deleted file mode 100644 index f00d8ac071..0000000000 --- a/src/Umbraco.Core/Composing/IRegister.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; - -namespace Umbraco.Core.Composing -{ - /// - /// Defines a service register for Umbraco. - /// - public interface IRegister - { - /// - /// Registers a service as its own implementation. - /// - void Register(Type serviceType, Lifetime lifetime = Lifetime.Transient); - - /// - /// Registers a service with an implementation type. - /// - void Register(Type serviceType, Type implementingType, Lifetime lifetime = Lifetime.Transient); - - /// - /// Registers a service with an implementation factory. - /// - void Register(Func factory, Lifetime lifetime = Lifetime.Transient) - where TService : class; - - /// - /// Registers a service with an implementing instance. - /// - void Register(Type serviceType, object instance); - - #region Control - - /// - /// Creates the factory. - /// - IFactory CreateFactory(); - - #endregion - } -} diff --git a/src/Umbraco.Core/Composing/LazyResolve.cs b/src/Umbraco.Core/Composing/LazyResolve.cs new file mode 100644 index 0000000000..5a60b54d87 --- /dev/null +++ b/src/Umbraco.Core/Composing/LazyResolve.cs @@ -0,0 +1,13 @@ +using System; +using Microsoft.Extensions.DependencyInjection; + +namespace Umbraco.Core.Composing +{ + public class LazyResolve : Lazy + where T : class + { + public LazyResolve(IServiceProvider serviceProvider) + : base(serviceProvider.GetRequiredService) + { } + } +} diff --git a/src/Umbraco.Core/Composing/Lifetime.cs b/src/Umbraco.Core/Composing/Lifetime.cs deleted file mode 100644 index 012555be5e..0000000000 --- a/src/Umbraco.Core/Composing/Lifetime.cs +++ /dev/null @@ -1,80 +0,0 @@ -namespace Umbraco.Core.Composing -{ - /// - /// Specifies the lifetime of a registered instance. - /// - public enum Lifetime - { - /// - /// Always get a new instance. - /// - /// Corresponds to Transient in LightInject, Castle Windsor - /// or MS.DI, PerDependency in Autofac. - Transient, - - // TODO: We need to fix this up, currently LightInject is the only one that behaves differently from all other containers. - // ... the simple fix would be to map this to PerScopeLifetime in LI but need to wait on a response here https://github.com/seesharper/LightInject/issues/494#issuecomment-518942625 - // - // we use it for controllers, httpContextBase and other request scoped objects: MembershpHelper, TagQuery, UmbracoTreeSearcher and ISearchableTree - // - so that they are automatically disposed at the end of the scope (ie request) - // - not sure they should not be simply 'scoped'? - - /// - /// One unique instance per request. - /// - /// - /// - /// Any instance created with this lifetime will be disposed at the end of a request. - /// - /// Corresponds to - /// - /// PerRequestLifeTime in LightInject - means transient but disposed at the end of the current web request. - /// see: https://github.com/seesharper/LightInject/issues/494#issuecomment-518493262 - /// - /// - /// Scoped in MS.DI - means one per web request. - /// see https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.2#service-lifetimes - /// - /// InstancePerRequest in Autofac - means one per web request. - /// see https://autofaccn.readthedocs.io/en/latest/lifetime/instance-scope.html#instance-per-request - /// But "Behind the scenes, though, it’s still just instance per matching lifetime scope." - /// - /// - /// LifestylePerWebRequest in Castle Windsor - means one per web request. - /// see https://github.com/castleproject/Windsor/blob/master/docs/mvc-tutorial-part-7-lifestyles.md#the-perwebrequest-lifestyle - /// - /// - Request, - - /// - /// One unique instance per scope. - /// - /// - /// - /// Any instance created with this lifetime will be disposed at the end of the current scope. - /// - /// Corresponds to - /// PerScopeLifetime in LightInject (when in a request, means one per web request) - /// - /// Scoped in MS.DI (when in a request, means one per web request) - /// see https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.2#service-lifetimes - /// - /// InstancePerLifetimeScope in Autofac (when in a request, means one per web request) - /// see https://autofaccn.readthedocs.io/en/latest/lifetime/instance-scope.html#instance-per-lifetime-scope - /// Also note that Autofac's InstancePerRequest is the same as this, see https://autofaccn.readthedocs.io/en/latest/lifetime/instance-scope.html#instance-per-request - /// it says "Behind the scenes, though, it’s still just instance per matching lifetime scope." - /// - /// - /// LifestyleScoped in Castle Windsor - /// - /// - Scope, - - /// - /// One unique instance per container. - /// - /// Corresponds to Singleton in LightInject, Castle Windsor - /// or MS.DI and to SingleInstance in Autofac. - Singleton - } -} diff --git a/src/Umbraco.Core/Composing/ServiceCollectionRegistryAdapter.cs b/src/Umbraco.Core/Composing/ServiceCollectionRegistryAdapter.cs deleted file mode 100644 index 7058ba1e5d..0000000000 --- a/src/Umbraco.Core/Composing/ServiceCollectionRegistryAdapter.cs +++ /dev/null @@ -1,97 +0,0 @@ -using System; -using Microsoft.Extensions.DependencyInjection; -using Umbraco.Core.Composing; - -namespace Umbraco.Infrastructure.Composing -{ - public class ServiceCollectionRegistryAdapter : IRegister - { - public IServiceCollection Services { get; } - - public ServiceCollectionRegistryAdapter(IServiceCollection services) - { - Services = services ?? throw new ArgumentNullException(nameof(services)); - Services.AddTransient(typeof(Lazy<>), typeof(LazyResolve<>)); - } - - public void Register(Type serviceType, Lifetime lifetime = Lifetime.Transient) - { - switch (lifetime) - { - case Lifetime.Request: - case Lifetime.Scope: - Services.AddScoped(serviceType); - break; - case Lifetime.Transient: - Services.AddTransient(serviceType); - break; - case Lifetime.Singleton: - Services.AddSingleton(serviceType); - break; - default: - throw new NotImplementedException($"Unhandled Lifetime: {lifetime}"); - } - } - - public void Register(Type serviceType, Type implementingType, Lifetime lifetime = Lifetime.Transient) - { - switch (lifetime) - { - case Lifetime.Request: - case Lifetime.Scope: - Services.AddScoped(serviceType, implementingType); - break; - case Lifetime.Transient: - Services.AddTransient(serviceType, implementingType); - break; - case Lifetime.Singleton: - Services.AddSingleton(serviceType, implementingType); - break; - default: - throw new NotImplementedException($"Unhandled Lifetime: {lifetime}"); - } - } - - public void Register(Func factory, Lifetime lifetime = Lifetime.Transient) where TService : class - { - switch (lifetime) - { - case Lifetime.Request: - case Lifetime.Scope: - Services.AddScoped(sp => factory(ServiceProviderFactoryAdapter.Wrap(sp))); - break; - case Lifetime.Transient: - Services.AddTransient(sp => factory(ServiceProviderFactoryAdapter.Wrap(sp))); - break; - case Lifetime.Singleton: - Services.AddSingleton(sp => factory(ServiceProviderFactoryAdapter.Wrap(sp))); - break; - default: - throw new NotImplementedException($"Unhandled Lifetime: {lifetime}"); - } - } - public void Register(Type serviceType, object instance) - { - Services.AddSingleton(serviceType, instance); - } - - public IFactory CreateFactory() - { - return ServiceProviderFactoryAdapter.Wrap(Services.BuildServiceProvider()); - } - - public static IRegister Wrap(IServiceCollection services) - { - return new ServiceCollectionRegistryAdapter(services); - } - } - - public class LazyResolve : Lazy - where T : class - { - public LazyResolve(IServiceProvider serviceProvider) : base(serviceProvider.GetRequiredService) - { - - } - } -} diff --git a/src/Umbraco.Core/Composing/ServiceProviderFactoryAdapter.cs b/src/Umbraco.Core/Composing/ServiceProviderFactoryAdapter.cs deleted file mode 100644 index eb53880ee2..0000000000 --- a/src/Umbraco.Core/Composing/ServiceProviderFactoryAdapter.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.Extensions.DependencyInjection; -using Umbraco.Core.Composing; - -namespace Umbraco.Infrastructure.Composing -{ - public class ServiceProviderFactoryAdapter : IFactory - { - public IServiceProvider ServiceProvider { get; } - - private ServiceProviderFactoryAdapter(IServiceProvider serviceProvider) - { - ServiceProvider = serviceProvider; - } - - public object Concrete => ServiceProvider; - - public object GetRequiredService(Type type) - { - return ServiceProvider.GetRequiredService(type); - } - - public object GetService(Type type) - { - return ServiceProvider.GetService(type); - } - - public IEnumerable GetServices(Type serviceType) - { - return ServiceProvider.GetServices(serviceType); - } - - public IEnumerable GetServices() where TService : class - { - return ServiceProvider.GetServices(); - } - - public IDisposable BeginScope() - { - return ServiceProvider.CreateScope(); - } - - public static IFactory Wrap(IServiceProvider serviceProvider) - { - return new ServiceProviderFactoryAdapter(serviceProvider); - } - } -} diff --git a/src/Umbraco.Core/Composing/TypeCollectionBuilderBase.cs b/src/Umbraco.Core/Composing/TypeCollectionBuilderBase.cs index b4dcd39da2..edbf554a2c 100644 --- a/src/Umbraco.Core/Composing/TypeCollectionBuilderBase.cs +++ b/src/Umbraco.Core/Composing/TypeCollectionBuilderBase.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using Microsoft.Extensions.DependencyInjection; namespace Umbraco.Core.Composing { @@ -51,14 +52,14 @@ namespace Umbraco.Core.Composing return This; } - public TCollection CreateCollection(IFactory factory) + public TCollection CreateCollection(IServiceProvider factory) { return factory.CreateInstance(_types); } - public void RegisterWith(IRegister register) + public void RegisterWith(IServiceCollection services) { - register.Register(CreateCollection, Lifetime.Singleton); + services.Add(new ServiceDescriptor(typeof(TCollection), CreateCollection, ServiceLifetime.Singleton)); } } } diff --git a/src/Umbraco.Core/CompositionExtensions_Uniques.cs b/src/Umbraco.Core/CompositionExtensions_Uniques.cs deleted file mode 100644 index 11d4877aca..0000000000 --- a/src/Umbraco.Core/CompositionExtensions_Uniques.cs +++ /dev/null @@ -1,43 +0,0 @@ -using Umbraco.Core.Composing; - -namespace Umbraco.Core -{ - /// - /// Provides extension methods to the class. - /// - public static partial class CompositionExtensions - { - /// - /// Registers a unique service as its own implementation. - /// - public static void RegisterUnique(this Composition composition) - => composition.RegisterUnique(typeof(TService), typeof(TService)); - - /// - /// Registers a unique service with an implementation type. - /// - public static void RegisterUnique(this Composition composition) - => composition.RegisterUnique(typeof(TService), typeof(TImplementing)); - - /// - /// Registers a unique service with an implementing instance. - /// - public static void RegisterUnique(this Composition composition, TService instance) - => composition.RegisterUnique(typeof(TService), instance); - - - - /// - /// Registers a unique service with an implementation type. - /// - public static void RegisterMultipleUnique(this Composition composition) - where TImplementing : class, TService1, TService2 - where TService1 : class - where TService2 : class - { - composition.RegisterUnique(); - composition.RegisterUnique(factory => factory.GetRequiredService()); - composition.RegisterUnique(factory => factory.GetRequiredService()); - } - } -} diff --git a/src/Umbraco.Core/ContentApps/ContentAppFactoryCollectionBuilder.cs b/src/Umbraco.Core/ContentApps/ContentAppFactoryCollectionBuilder.cs index 4e1c7d8693..0f0e09042b 100644 --- a/src/Umbraco.Core/ContentApps/ContentAppFactoryCollectionBuilder.cs +++ b/src/Umbraco.Core/ContentApps/ContentAppFactoryCollectionBuilder.cs @@ -1,5 +1,7 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Composing; @@ -15,7 +17,7 @@ namespace Umbraco.Web.ContentApps protected override ContentAppFactoryCollectionBuilder This => this; // need to inject dependencies in the collection, so override creation - public override ContentAppFactoryCollection CreateCollection(IFactory factory) + public override ContentAppFactoryCollection CreateCollection(IServiceProvider factory) { // get the logger factory just-in-time - see note below for manifest parser var loggerFactory = factory.GetRequiredService(); @@ -23,7 +25,7 @@ namespace Umbraco.Web.ContentApps return new ContentAppFactoryCollection(CreateItems(factory), loggerFactory.CreateLogger(), umbracoContextAccessor); } - protected override IEnumerable CreateItems(IFactory factory) + protected override IEnumerable CreateItems(IServiceProvider factory) { // get the manifest parser just-in-time - injecting it in the ctor would mean that // simply getting the builder in order to configure the collection, would require diff --git a/src/Umbraco.Core/Dashboards/DashboardCollectionBuilder.cs b/src/Umbraco.Core/Dashboards/DashboardCollectionBuilder.cs index 8bad0cb23c..7ed241b819 100644 --- a/src/Umbraco.Core/Dashboards/DashboardCollectionBuilder.cs +++ b/src/Umbraco.Core/Dashboards/DashboardCollectionBuilder.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Dashboards; @@ -26,7 +27,7 @@ namespace Umbraco.Web.Dashboards return this; } - protected override IEnumerable CreateItems(IFactory factory) + protected override IEnumerable CreateItems(IServiceProvider factory) { // get the manifest parser just-in-time - injecting it in the ctor would mean that // simply getting the builder in order to configure the collection, would require diff --git a/src/Umbraco.Core/FactoryExtensions.cs b/src/Umbraco.Core/FactoryExtensions.cs deleted file mode 100644 index 0a5c04c98f..0000000000 --- a/src/Umbraco.Core/FactoryExtensions.cs +++ /dev/null @@ -1,105 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using Umbraco.Core.Composing; - -namespace Umbraco.Core -{ - /// - /// Provides extension methods to the class. - /// - public static class FactoryExtensions - { - /// - /// Gets an instance of a service. - /// - /// The type of the service. - /// The factory. - /// An instance of the specified type. - /// Throws an exception if the factory failed to get an instance of the specified type. - public static T GetRequiredService(this IFactory factory) - where T : class - => (T)factory.GetRequiredService(typeof(T)); - - /// - /// Tries to get an instance of a service. - /// - /// The type of the service. - /// An instance of the specified type, or null. - /// Returns null if the factory does not know how to get an instance - /// of the specified type. Throws an exception if the factory does know how - /// to get an instance of the specified type, but failed to do so. - public static T GetService(this IFactory factory) - where T : class - => (T)factory.GetService(typeof(T)); - - /// - /// Creates an instance with arguments. - /// - /// The type of the instance. - /// The factory. - /// Arguments. - /// An instance of the specified type. - /// - /// Throws an exception if the factory failed to get an instance of the specified type. - /// The arguments are used as dependencies by the factory. - /// - public static T CreateInstance(this IFactory factory, params object[] args) - where T : class - => (T)factory.CreateInstance(typeof(T), args); - - /// - /// Creates an instance of a service, with arguments. - /// - /// - /// The type of the instance. - /// Named arguments. - /// An instance of the specified type. - /// - /// The instance type does not need to be registered into the factory. - /// The arguments are used as dependencies by the factory. Other dependencies - /// are retrieved from the factory. - /// - public static object CreateInstance(this IFactory factory, Type type, params object[] args) - { - // LightInject has this, but then it requires RegisterConstructorDependency etc and has various oddities - // including the most annoying one, which is that it does not work on singletons (hard to fix) - //return factory.GetInstance(type, args); - - // this method is essentially used to build singleton instances, so it is assumed that it would be - // more expensive to build and cache a dynamic method ctor than to simply invoke the ctor, as we do - // here - this can be discussed - - // TODO: we currently try the ctor with most parameters, but we could want to fall back to others - - var ctor = type.GetConstructors(BindingFlags.Instance | BindingFlags.Public).OrderByDescending(x => x.GetParameters().Length).FirstOrDefault(); - if (ctor == null) throw new InvalidOperationException($"Could not find a public constructor for type {type.FullName}."); - - var ctorParameters = ctor.GetParameters(); - var ctorArgs = new object[ctorParameters.Length]; - var availableArgs = new List(args); - var i = 0; - foreach (var parameter in ctorParameters) - { - // no! IsInstanceOfType is not ok here - // ReSharper disable once UseMethodIsInstanceOfType - var idx = availableArgs.FindIndex(a => parameter.ParameterType.IsAssignableFrom(a.GetType())); - if(idx >= 0) - { - // Found a suitable supplied argument - ctorArgs[i++] = availableArgs[idx]; - - // A supplied argument can be used at most once - availableArgs.RemoveAt(idx); - } - else - { - // None of the provided arguments is suitable: get an instance from the factory - ctorArgs[i++] = factory.GetRequiredService(parameter.ParameterType); - } - } - return ctor.Invoke(ctorArgs); - } - } -} diff --git a/src/Umbraco.Core/HealthCheck/HeathCheckCollectionBuilder.cs b/src/Umbraco.Core/HealthCheck/HeathCheckCollectionBuilder.cs index 0894cb1912..be3a788cff 100644 --- a/src/Umbraco.Core/HealthCheck/HeathCheckCollectionBuilder.cs +++ b/src/Umbraco.Core/HealthCheck/HeathCheckCollectionBuilder.cs @@ -1,4 +1,5 @@ -using Umbraco.Core.Composing; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Core.Composing; namespace Umbraco.Core.HealthCheck { @@ -8,6 +9,6 @@ namespace Umbraco.Core.HealthCheck // note: in v7 they were per-request, not sure why? // the collection is injected into the controller & there's only 1 controller per request anyways - protected override Lifetime CollectionLifetime => Lifetime.Transient; // transient! + protected override ServiceLifetime CollectionLifetime => ServiceLifetime.Transient; // transient! } } diff --git a/src/Umbraco.Core/IO/FileSystems.cs b/src/Umbraco.Core/IO/FileSystems.cs index 485e6b6446..a19ebd999b 100644 --- a/src/Umbraco.Core/IO/FileSystems.cs +++ b/src/Umbraco.Core/IO/FileSystems.cs @@ -3,8 +3,6 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Threading; using Microsoft.Extensions.Logging; -using Umbraco.Core.Composing; -using Umbraco.Core.Configuration; using Umbraco.Core.Hosting; using Umbraco.Core.Configuration.Models; using Microsoft.Extensions.Options; @@ -13,7 +11,7 @@ namespace Umbraco.Core.IO { public class FileSystems : IFileSystems { - private readonly IFactory _container; + private readonly IServiceProvider _container; private readonly ILogger _logger; private readonly ILoggerFactory _loggerFactory; private readonly IIOHelper _ioHelper; @@ -39,7 +37,7 @@ namespace Umbraco.Core.IO #region Constructor // DI wants a public ctor - public FileSystems(IFactory container, ILogger logger, ILoggerFactory loggerFactory, IIOHelper ioHelper, IOptions globalSettings, IHostingEnvironment hostingEnvironment) + public FileSystems(IServiceProvider container, ILogger logger, ILoggerFactory loggerFactory, IIOHelper ioHelper, IOptions globalSettings, IHostingEnvironment hostingEnvironment) { _container = container; _logger = logger; diff --git a/src/Umbraco.Core/Manifest/ManifestFilterCollectionBuilder.cs b/src/Umbraco.Core/Manifest/ManifestFilterCollectionBuilder.cs index 4d98700f93..47593c2548 100644 --- a/src/Umbraco.Core/Manifest/ManifestFilterCollectionBuilder.cs +++ b/src/Umbraco.Core/Manifest/ManifestFilterCollectionBuilder.cs @@ -1,4 +1,5 @@ -using Umbraco.Core.Composing; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Core.Composing; namespace Umbraco.Core.Manifest { @@ -7,6 +8,6 @@ namespace Umbraco.Core.Manifest protected override ManifestFilterCollectionBuilder This => this; // do NOT cache this, it's only used once - protected override Lifetime CollectionLifetime => Lifetime.Transient; + protected override ServiceLifetime CollectionLifetime => ServiceLifetime.Transient; } -} \ No newline at end of file +} diff --git a/src/Umbraco.Core/Mapping/MapDefinitionCollectionBuilder.cs b/src/Umbraco.Core/Mapping/MapDefinitionCollectionBuilder.cs index 15d94e58a0..6cccde9525 100644 --- a/src/Umbraco.Core/Mapping/MapDefinitionCollectionBuilder.cs +++ b/src/Umbraco.Core/Mapping/MapDefinitionCollectionBuilder.cs @@ -1,4 +1,5 @@ -using Umbraco.Core.Composing; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Core.Composing; namespace Umbraco.Core.Mapping { @@ -6,6 +7,6 @@ namespace Umbraco.Core.Mapping { protected override MapDefinitionCollectionBuilder This => this; - protected override Lifetime CollectionLifetime => Lifetime.Transient; + protected override ServiceLifetime CollectionLifetime => ServiceLifetime.Transient; } } diff --git a/src/Umbraco.Core/RegisterExtensions.cs b/src/Umbraco.Core/RegisterExtensions.cs deleted file mode 100644 index 67f256a26f..0000000000 --- a/src/Umbraco.Core/RegisterExtensions.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Umbraco.Core.Composing; - -namespace Umbraco.Core -{ - /// - /// Provides extension methods to the class. - /// - public static class RegisterExtensions - { - /// - /// Registers a service with an implementation type. - /// - public static void Register(this IRegister register, Lifetime lifetime = Lifetime.Transient) - => register.Register(typeof(TService), typeof(TImplementing), lifetime); - - /// - /// Registers a service as its own implementation. - /// - public static void Register(this IRegister register, Lifetime lifetime = Lifetime.Transient) - where TService : class - => register.Register(typeof(TService), lifetime); - - /// - /// Registers a service with an implementing instance. - /// - public static void Register(this IRegister register, TService instance) - where TService : class - => register.Register(typeof(TService), instance); - } -} diff --git a/src/Umbraco.Core/Sections/SectionCollectionBuilder.cs b/src/Umbraco.Core/Sections/SectionCollectionBuilder.cs index d122816949..9bda065881 100644 --- a/src/Umbraco.Core/Sections/SectionCollectionBuilder.cs +++ b/src/Umbraco.Core/Sections/SectionCollectionBuilder.cs @@ -1,6 +1,7 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; -using Umbraco.Core; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core.Composing; using Umbraco.Core.Manifest; using Umbraco.Core.Models.Sections; @@ -11,7 +12,7 @@ namespace Umbraco.Web.Sections { protected override SectionCollectionBuilder This => this; - protected override IEnumerable CreateItems(IFactory factory) + protected override IEnumerable CreateItems(IServiceProvider factory) { // get the manifest parser just-in-time - injecting it in the ctor would mean that // simply getting the builder in order to configure the collection, would require diff --git a/src/Umbraco.Core/ServiceCollectionExtensions.cs b/src/Umbraco.Core/ServiceCollectionExtensions.cs new file mode 100644 index 0000000000..3202cc3a38 --- /dev/null +++ b/src/Umbraco.Core/ServiceCollectionExtensions.cs @@ -0,0 +1,47 @@ +using System; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; +using Umbraco.Core.Composing; + +namespace Umbraco.Core +{ + public static class ServiceCollectionExtensions + { + public static void AddUnique(this IServiceCollection services) + where TService : class + where TImplementing : class, TService + => services.Replace(ServiceDescriptor.Singleton()); + + public static void AddUnique(this IServiceCollection services) + where TImplementing : class + => services.Replace(ServiceDescriptor.Singleton()); + + /// + /// Registers a unique service with an implementation factory. + /// + /// Unique services have one single implementation, and a Singleton lifetime. + public static void AddUnique(this IServiceCollection services, Func factory) + where TService : class + => services.Replace(ServiceDescriptor.Singleton(factory)); + + /// + /// Registers a unique service with an implementing instance. + /// + /// Unique services have one single implementation, and a Singleton lifetime. + public static void AddUnique(this IServiceCollection services, Type serviceType, object instance) + => services.Replace(ServiceDescriptor.Singleton(serviceType, instance)); + + /// + /// Registers a unique service with an implementing instance. + /// + public static void AddUnique(this IServiceCollection services, TService instance) + where TService : class + => services.Replace(ServiceDescriptor.Singleton(instance)); + + public static IServiceCollection AddLazySupport(this IServiceCollection services) + { + services.Replace(ServiceDescriptor.Transient(typeof(Lazy<>), typeof(LazyResolve<>))); + return services; + } + } +} diff --git a/src/Umbraco.Core/ServiceProviderExtensions.cs b/src/Umbraco.Core/ServiceProviderExtensions.cs new file mode 100644 index 0000000000..e0d3da2c03 --- /dev/null +++ b/src/Umbraco.Core/ServiceProviderExtensions.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Core.Composing; + +namespace Umbraco.Core +{ + /// + /// Provides extension methods to the class. + /// + public static class ServiceProviderExtensions + { + + /// + /// Creates an instance with arguments. + /// + /// The type of the instance. + /// The factory. + /// Arguments. + /// An instance of the specified type. + /// + /// Throws an exception if the factory failed to get an instance of the specified type. + /// The arguments are used as dependencies by the factory. + /// + public static T CreateInstance(this IServiceProvider serviceProvider, params object[] args) + where T : class + => (T)serviceProvider.CreateInstance(typeof(T), args); + + /// + /// Creates an instance of a service, with arguments. + /// + /// + /// The type of the instance. + /// Named arguments. + /// An instance of the specified type. + /// + /// The instance type does not need to be registered into the factory. + /// The arguments are used as dependencies by the factory. Other dependencies + /// are retrieved from the factory. + /// + public static object CreateInstance(this IServiceProvider serviceProvider, Type type, params object[] args) + { + // LightInject has this, but then it requires RegisterConstructorDependency etc and has various oddities + // including the most annoying one, which is that it does not work on singletons (hard to fix) + //return factory.GetInstance(type, args); + + // this method is essentially used to build singleton instances, so it is assumed that it would be + // more expensive to build and cache a dynamic method ctor than to simply invoke the ctor, as we do + // here - this can be discussed + + // TODO: we currently try the ctor with most parameters, but we could want to fall back to others + + //var ctor = type.GetConstructors(BindingFlags.Instance | BindingFlags.Public).OrderByDescending(x => x.GetParameters().Length).FirstOrDefault(); + //if (ctor == null) throw new InvalidOperationException($"Could not find a public constructor for type {type.FullName}."); + + //var ctorParameters = ctor.GetParameters(); + //var ctorArgs = new object[ctorParameters.Length]; + //var availableArgs = new List(args); + //var i = 0; + //foreach (var parameter in ctorParameters) + //{ + // // no! IsInstanceOfType is not ok here + // // ReSharper disable once UseMethodIsInstanceOfType + // var idx = availableArgs.FindIndex(a => parameter.ParameterType.IsAssignableFrom(a.GetType())); + // if (idx >= 0) + // { + // // Found a suitable supplied argument + // ctorArgs[i++] = availableArgs[idx]; + + // // A supplied argument can be used at most once + // availableArgs.RemoveAt(idx); + // } + // else + // { + // // None of the provided arguments is suitable: get an instance from the factory + // ctorArgs[i++] = serviceProvider.GetRequiredService(parameter.ParameterType); + // } + //} + //return ctor.Invoke(ctorArgs); + + return ActivatorUtilities.CreateInstance(serviceProvider, type, args); + } + } +} diff --git a/src/Umbraco.Core/Tour/TourFilterCollectionBuilder.cs b/src/Umbraco.Core/Tour/TourFilterCollectionBuilder.cs index 0d2f605cb1..eac519494a 100644 --- a/src/Umbraco.Core/Tour/TourFilterCollectionBuilder.cs +++ b/src/Umbraco.Core/Tour/TourFilterCollectionBuilder.cs @@ -15,7 +15,7 @@ namespace Umbraco.Web.Tour private readonly HashSet _instances = new HashSet(); /// - protected override IEnumerable CreateItems(IFactory factory) + protected override IEnumerable CreateItems(IServiceProvider factory) { return base.CreateItems(factory).Concat(_instances); } diff --git a/src/Umbraco.Examine.Lucene/ExamineLuceneComposer.cs b/src/Umbraco.Examine.Lucene/ExamineLuceneComposer.cs index b1254a4beb..b0da33569c 100644 --- a/src/Umbraco.Examine.Lucene/ExamineLuceneComposer.cs +++ b/src/Umbraco.Examine.Lucene/ExamineLuceneComposer.cs @@ -17,10 +17,10 @@ namespace Umbraco.Examine base.Compose(composition); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); } } } diff --git a/src/Umbraco.Infrastructure/Cache/DistributedCacheBinderComposer.cs b/src/Umbraco.Infrastructure/Cache/DistributedCacheBinderComposer.cs index 86f70798d7..3e99d453fa 100644 --- a/src/Umbraco.Infrastructure/Cache/DistributedCacheBinderComposer.cs +++ b/src/Umbraco.Infrastructure/Cache/DistributedCacheBinderComposer.cs @@ -14,7 +14,7 @@ namespace Umbraco.Web.Cache { base.Compose(composition); - composition.RegisterUnique(); + composition.Services.AddUnique(); } } } diff --git a/src/Umbraco.Infrastructure/Compose/DatabaseServerRegistrarAndMessengerComponent.cs b/src/Umbraco.Infrastructure/Compose/DatabaseServerRegistrarAndMessengerComponent.cs index 420730d779..9cd2b187d5 100644 --- a/src/Umbraco.Infrastructure/Compose/DatabaseServerRegistrarAndMessengerComponent.cs +++ b/src/Umbraco.Infrastructure/Compose/DatabaseServerRegistrarAndMessengerComponent.cs @@ -1,5 +1,6 @@ using System; using System.Threading; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Composing; @@ -35,7 +36,7 @@ namespace Umbraco.Web.Compose public sealed class DatabaseServerRegistrarAndMessengerComposer : ComponentComposer, ICoreComposer { - public static DatabaseServerMessengerOptions GetDefaultOptions(IFactory factory) + public static DatabaseServerMessengerOptions GetDefaultOptions(IServiceProvider factory) { return new DatabaseServerMessengerOptions { diff --git a/src/Umbraco.Infrastructure/Compose/NotificationsComposer.cs b/src/Umbraco.Infrastructure/Compose/NotificationsComposer.cs index 7b4bebf878..a483b170de 100644 --- a/src/Umbraco.Infrastructure/Compose/NotificationsComposer.cs +++ b/src/Umbraco.Infrastructure/Compose/NotificationsComposer.cs @@ -10,7 +10,7 @@ namespace Umbraco.Web.Compose { base.Compose(composition); - composition.RegisterUnique(); + composition.Services.AddUnique(); } } } diff --git a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/CoreMappingProfiles.cs b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/CoreMappingProfiles.cs index fc2f8c9e88..823f8618ad 100644 --- a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/CoreMappingProfiles.cs +++ b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/CoreMappingProfiles.cs @@ -15,7 +15,7 @@ namespace Umbraco.Core.Composing.CompositionExtensions /// public static Composition ComposeCoreMappingProfiles(this Composition composition) { - composition.RegisterUnique(); + composition.Services.AddUnique(); composition.WithCollectionBuilder() .Add() diff --git a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/FileSystems.cs b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/FileSystems.cs index b19558ef44..a4286bd719 100644 --- a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/FileSystems.cs +++ b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/FileSystems.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; @@ -14,10 +15,13 @@ namespace Umbraco.Core.Composing.CompositionExtensions * HOW TO REPLACE THE MEDIA UNDERLYING FILESYSTEM * ---------------------------------------------- * - * composition.RegisterUnique(factoryMethod); + * Create an implementation of IFileSystem and register it as the underlying filesystem for + * MediaFileSystem with the following extension on composition. * - * composition.RegisterUnique(); + * composition.SetMediaFileSystem(factory => FactoryMethodToReturnYourImplementation()) * + * Alternatively you can just register an Implementation of IMediaFileSystem, however the + * extension above ensures that your IFileSystem implementation is wrapped by the "ShadowWrapper". * * WHAT IS SHADOWING * ----------------- @@ -27,7 +31,6 @@ namespace Umbraco.Core.Composing.CompositionExtensions * compared to creating your own physical filesystem, ensures that your filesystem * would participate into such transactions. * - * */ public static Composition ComposeFileSystems(this Composition composition) @@ -36,16 +39,15 @@ namespace Umbraco.Core.Composing.CompositionExtensions // it needs to be registered (not only the interface) because it provides additional // functionality eg for scoping, and is injected in the scope provider - whereas the // interface is really for end-users to get access to filesystems. - composition.RegisterUnique(factory => factory.CreateInstance(factory)); + composition.Services.AddUnique(factory => factory.CreateInstance(factory)); // register IFileSystems, which gives access too all filesystems - composition.RegisterUnique(factory => factory.GetRequiredService()); + composition.Services.AddUnique(factory => factory.GetRequiredService()); // register the scheme for media paths - composition.RegisterUnique(); + composition.Services.AddUnique(); - // register the default IMediaFileSystem implementation - composition.RegisterUnique(factory => + composition.SetMediaFileSystem(factory => { var ioHelper = factory.GetRequiredService(); var hostingEnvironment = factory.GetRequiredService(); @@ -54,10 +56,7 @@ namespace Umbraco.Core.Composing.CompositionExtensions var rootPath = hostingEnvironment.MapPathWebRoot(globalSettings.UmbracoMediaPath); var rootUrl = hostingEnvironment.ToAbsolute(globalSettings.UmbracoMediaPath); - var inner = new PhysicalFileSystem(ioHelper, hostingEnvironment, logger, rootPath, rootUrl); - - var fileSystems = factory.GetRequiredService(); - return fileSystems.GetFileSystem(inner); + return new PhysicalFileSystem(ioHelper, hostingEnvironment, logger, rootPath, rootUrl); }); return composition; diff --git a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Installer.cs b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Installer.cs index 403e13816e..7e64b0698c 100644 --- a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Installer.cs +++ b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Installer.cs @@ -28,7 +28,7 @@ namespace Umbraco.Web.Composing.CompositionExtensions composition.Services.AddScoped(); composition.Services.AddTransient(); - composition.RegisterUnique(); + composition.Services.AddUnique(); return composition; } diff --git a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Repositories.cs b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Repositories.cs index 9a23255cc4..8d15b5761a 100644 --- a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Repositories.cs +++ b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Repositories.cs @@ -11,45 +11,45 @@ namespace Umbraco.Core.Composing.CompositionExtensions public static Composition ComposeRepositories(this Composition composition) { // repositories - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); return composition; } diff --git a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Services.cs b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Services.cs index 37c0bae384..c6106b2191 100644 --- a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Services.cs +++ b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Services.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Microsoft.Extensions.Logging; using Umbraco.Core.Cache; @@ -22,58 +23,58 @@ namespace Umbraco.Core.Composing.CompositionExtensions { // register a transient messages factory, which will be replaced by the web // boot manager when running in a web context - composition.RegisterUnique(); + composition.Services.AddUnique(); // register the service context - composition.RegisterUnique(); + composition.Services.AddUnique(); // register the special idk map - composition.RegisterUnique(); + composition.Services.AddUnique(); // register the services - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.Register(SourcesFactory); - composition.RegisterUnique(factory => new LocalizedTextService( + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddTransient(SourcesFactory); + composition.Services.AddUnique(factory => new LocalizedTextService( factory.GetRequiredService>(), factory.GetRequiredService>())); - composition.RegisterUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(factory => CreatePackageRepository(factory, "createdPackages.config")); - composition.RegisterUnique(factory => CreatePackageRepository(factory, "installedPackages.config")); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(factory => CreatePackageRepository(factory, "createdPackages.config")); + composition.Services.AddUnique(factory => CreatePackageRepository(factory, "installedPackages.config")); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); return composition; } @@ -84,7 +85,7 @@ namespace Umbraco.Core.Composing.CompositionExtensions /// /// /// - private static PackagesRepository CreatePackageRepository(IFactory factory, string packageRepoFileName) + private static PackagesRepository CreatePackageRepository(IServiceProvider factory, string packageRepoFileName) => new PackagesRepository( factory.GetRequiredService(), factory.GetRequiredService(), @@ -99,7 +100,7 @@ namespace Umbraco.Core.Composing.CompositionExtensions factory.GetRequiredService>(), packageRepoFileName); - private static LocalizedTextServiceFileSources SourcesFactory(IFactory container) + private static LocalizedTextServiceFileSources SourcesFactory(IServiceProvider container) { var hostingEnvironment = container.GetRequiredService(); var globalSettings = container.GetRequiredService>().Value; diff --git a/src/Umbraco.Infrastructure/CompositionExtensions.cs b/src/Umbraco.Infrastructure/CompositionExtensions.cs index 6ba5c34505..aa351657c5 100644 --- a/src/Umbraco.Infrastructure/CompositionExtensions.cs +++ b/src/Umbraco.Infrastructure/CompositionExtensions.cs @@ -1,4 +1,5 @@ using System; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Dictionary; @@ -111,9 +112,9 @@ namespace Umbraco.Core /// The type of the factory. /// The composition. public static void SetCultureDictionaryFactory(this Composition composition) - where T : ICultureDictionaryFactory + where T : class, ICultureDictionaryFactory { - composition.RegisterUnique(); + composition.Services.AddUnique(); } /// @@ -121,9 +122,9 @@ namespace Umbraco.Core /// /// The composition. /// A function creating a culture dictionary factory. - public static void SetCultureDictionaryFactory(this Composition composition, Func factory) + public static void SetCultureDictionaryFactory(this Composition composition, Func factory) { - composition.RegisterUnique(factory); + composition.Services.AddUnique(factory); } /// @@ -133,7 +134,7 @@ namespace Umbraco.Core /// A factory. public static void SetCultureDictionaryFactory(this Composition composition, ICultureDictionaryFactory factory) { - composition.RegisterUnique(_ => factory); + composition.Services.AddUnique(_ => factory); } /// @@ -142,9 +143,9 @@ namespace Umbraco.Core /// The type of the factory. /// The composition. public static void SetPublishedContentModelFactory(this Composition composition) - where T : IPublishedModelFactory + where T : class, IPublishedModelFactory { - composition.RegisterUnique(); + composition.Services.AddUnique(); } /// @@ -152,9 +153,9 @@ namespace Umbraco.Core /// /// The composition. /// A function creating a published content model factory. - public static void SetPublishedContentModelFactory(this Composition composition, Func factory) + public static void SetPublishedContentModelFactory(this Composition composition, Func factory) { - composition.RegisterUnique(factory); + composition.Services.AddUnique(factory); } /// @@ -164,7 +165,7 @@ namespace Umbraco.Core /// A published content model factory. public static void SetPublishedContentModelFactory(this Composition composition, IPublishedModelFactory factory) { - composition.RegisterUnique(_ => factory); + composition.Services.AddUnique(_ => factory); } /// @@ -173,9 +174,9 @@ namespace Umbraco.Core /// The type of the server registrar. /// The composition. public static void SetServerRegistrar(this Composition composition) - where T : IServerRegistrar + where T : class, IServerRegistrar { - composition.RegisterUnique(); + composition.Services.AddUnique(); } /// @@ -183,9 +184,9 @@ namespace Umbraco.Core /// /// The composition. /// A function creating a server registrar. - public static void SetServerRegistrar(this Composition composition, Func factory) + public static void SetServerRegistrar(this Composition composition, Func factory) { - composition.RegisterUnique(factory); + composition.Services.AddUnique(factory); } /// @@ -195,7 +196,7 @@ namespace Umbraco.Core /// A server registrar. public static void SetServerRegistrar(this Composition composition, IServerRegistrar registrar) { - composition.RegisterUnique(_ => registrar); + composition.Services.AddUnique(_ => registrar); } /// @@ -204,9 +205,9 @@ namespace Umbraco.Core /// The type of the server registrar. /// The composition. public static void SetServerMessenger(this Composition composition) - where T : IServerMessenger + where T : class, IServerMessenger { - composition.RegisterUnique(); + composition.Services.AddUnique(); } /// @@ -214,9 +215,9 @@ namespace Umbraco.Core /// /// The composition. /// A function creating a server messenger. - public static void SetServerMessenger(this Composition composition, Func factory) + public static void SetServerMessenger(this Composition composition, Func factory) { - composition.RegisterUnique(factory); + composition.Services.AddUnique(factory); } /// @@ -226,7 +227,7 @@ namespace Umbraco.Core /// A server messenger. public static void SetServerMessenger(this Composition composition, IServerMessenger registrar) { - composition.RegisterUnique(_ => registrar); + composition.Services.AddUnique(_ => registrar); } /// @@ -235,9 +236,9 @@ namespace Umbraco.Core /// The composition. /// A function creating the options. /// Use DatabaseServerRegistrarAndMessengerComposer.GetDefaultOptions to get the options that Umbraco would use by default. - public static void SetDatabaseServerMessengerOptions(this Composition composition, Func factory) + public static void SetDatabaseServerMessengerOptions(this Composition composition, Func factory) { - composition.RegisterUnique(factory); + composition.Services.AddUnique(factory); } /// @@ -248,7 +249,7 @@ namespace Umbraco.Core /// Use DatabaseServerRegistrarAndMessengerComposer.GetDefaultOptions to get the options that Umbraco would use by default. public static void SetDatabaseServerMessengerOptions(this Composition composition, DatabaseServerMessengerOptions options) { - composition.RegisterUnique(_ => options); + composition.Services.AddUnique(_ => options); } /// @@ -257,9 +258,9 @@ namespace Umbraco.Core /// The type of the short string helper. /// The composition. public static void SetShortStringHelper(this Composition composition) - where T : IShortStringHelper + where T : class, IShortStringHelper { - composition.RegisterUnique(); + composition.Services.AddUnique(); } /// @@ -267,9 +268,9 @@ namespace Umbraco.Core /// /// The composition. /// A function creating a short string helper. - public static void SetShortStringHelper(this Composition composition, Func factory) + public static void SetShortStringHelper(this Composition composition, Func factory) { - composition.RegisterUnique(factory); + composition.Services.AddUnique(factory); } /// @@ -279,18 +280,33 @@ namespace Umbraco.Core /// A short string helper. public static void SetShortStringHelper(this Composition composition, IShortStringHelper helper) { - composition.RegisterUnique(_ => helper); + composition.Services.AddUnique(_ => helper); } + /// + /// Sets the underlying media filesystem. + /// + /// A composition. + /// A filesystem factory. + /// + /// Using this helper will ensure that your IFileSystem implementation is wrapped by the ShadowWrapper + /// + public static void SetMediaFileSystem(this Composition composition, Func filesystemFactory) + => composition.Services.AddUnique(factory => + { + var fileSystems = factory.GetRequiredService(); + return fileSystems.GetFileSystem(filesystemFactory(factory)); + }); + /// /// Sets the log viewer. /// /// The type of the log viewer. /// The composition. public static void SetLogViewer(this Composition composition) - where T : ILogViewer + where T : class, ILogViewer { - composition.RegisterUnique(); + composition.Services.AddUnique(); } /// @@ -298,9 +314,9 @@ namespace Umbraco.Core /// /// The composition. /// A function creating a log viewer. - public static void SetLogViewer(this Composition composition, Func factory) + public static void SetLogViewer(this Composition composition, Func factory) { - composition.RegisterUnique(factory); + composition.Services.AddUnique(factory); } /// @@ -310,7 +326,7 @@ namespace Umbraco.Core /// A log viewer. public static void SetLogViewer(this Composition composition, ILogViewer viewer) { - composition.RegisterUnique(_ => viewer); + composition.Services.AddUnique(_ => viewer); } #endregion diff --git a/src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs b/src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs index 630d0970bd..d254139a04 100644 --- a/src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs +++ b/src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; @@ -38,24 +39,24 @@ namespace Umbraco.Core IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) { - composition.RegisterUnique(logger); - composition.RegisterUnique(loggerFactory); - composition.RegisterUnique(profiler); - composition.RegisterUnique(profilingLogger); - composition.RegisterUnique(mainDom); - composition.RegisterUnique(appCaches); - composition.RegisterUnique(appCaches.RequestCache); - composition.RegisterUnique(databaseFactory); - composition.RegisterUnique(factory => factory.GetRequiredService().SqlContext); - composition.RegisterUnique(typeLoader); - composition.RegisterUnique(state); - composition.RegisterUnique(typeFinder); - composition.RegisterUnique(ioHelper); - composition.RegisterUnique(umbracoVersion); - composition.RegisterUnique(dbProviderFactoryCreator); - composition.RegisterUnique(factory => factory.GetRequiredService().BulkSqlInsertProvider); - composition.RegisterUnique(hostingEnvironment); - composition.RegisterUnique(backOfficeInfo); + composition.Services.AddUnique(logger); + composition.Services.AddUnique(loggerFactory); + composition.Services.AddUnique(profiler); + composition.Services.AddUnique(profilingLogger); + composition.Services.AddUnique(mainDom); + composition.Services.AddUnique(appCaches); + composition.Services.AddUnique(appCaches.RequestCache); + composition.Services.AddUnique(databaseFactory); + composition.Services.AddUnique(factory => factory.GetRequiredService().SqlContext); + composition.Services.AddUnique(typeLoader); + composition.Services.AddUnique(state); + composition.Services.AddUnique(typeFinder); + composition.Services.AddUnique(ioHelper); + composition.Services.AddUnique(umbracoVersion); + composition.Services.AddUnique(dbProviderFactoryCreator); + composition.Services.AddUnique(factory => factory.GetRequiredService().BulkSqlInsertProvider); + composition.Services.AddUnique(hostingEnvironment); + composition.Services.AddUnique(backOfficeInfo); } } } diff --git a/src/Umbraco.Infrastructure/Logging/Serilog/SerilogComposer.cs b/src/Umbraco.Infrastructure/Logging/Serilog/SerilogComposer.cs index 18b417d428..59c9b47400 100644 --- a/src/Umbraco.Infrastructure/Logging/Serilog/SerilogComposer.cs +++ b/src/Umbraco.Infrastructure/Logging/Serilog/SerilogComposer.cs @@ -12,10 +12,10 @@ namespace Umbraco.Infrastructure.Logging.Serilog { public void Compose(Composition composition) { - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); } } } diff --git a/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerComposer.cs b/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerComposer.cs index 2c0f995236..6941647dfc 100644 --- a/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerComposer.cs +++ b/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerComposer.cs @@ -1,4 +1,5 @@ using System.IO; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Serilog; using Umbraco.Core.Composing; @@ -12,9 +13,9 @@ namespace Umbraco.Core.Logging.Viewer { public void Compose(Composition composition) { - composition.RegisterUnique(); + composition.Services.AddUnique(); composition.SetLogViewer(); - composition.RegisterUnique(factory => + composition.Services.AddUnique(factory => { return new SerilogJsonLogViewer(factory.GetRequiredService>(), diff --git a/src/Umbraco.Infrastructure/Migrations/MigrationBuilder.cs b/src/Umbraco.Infrastructure/Migrations/MigrationBuilder.cs index d2d2b7d32a..9fc5b1b277 100644 --- a/src/Umbraco.Infrastructure/Migrations/MigrationBuilder.cs +++ b/src/Umbraco.Infrastructure/Migrations/MigrationBuilder.cs @@ -5,9 +5,9 @@ namespace Umbraco.Core.Migrations { public class MigrationBuilder : IMigrationBuilder { - private readonly IFactory _container; + private readonly IServiceProvider _container; - public MigrationBuilder(IFactory container) + public MigrationBuilder(IServiceProvider container) { _container = container; } diff --git a/src/Umbraco.Infrastructure/Persistence/Mappers/MapperCollectionBuilder.cs b/src/Umbraco.Infrastructure/Persistence/Mappers/MapperCollectionBuilder.cs index 77f5b627bb..b5b295299d 100644 --- a/src/Umbraco.Infrastructure/Persistence/Mappers/MapperCollectionBuilder.cs +++ b/src/Umbraco.Infrastructure/Persistence/Mappers/MapperCollectionBuilder.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Concurrent; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core.Composing; using Umbraco.Infrastructure.Persistence.Mappers; @@ -9,9 +10,9 @@ namespace Umbraco.Core.Persistence.Mappers { protected override MapperCollectionBuilder This => this; - public override void RegisterWith(IRegister register) + public override void RegisterWith(IServiceCollection services) { - base.RegisterWith(register); + base.RegisterWith(services); // default initializer registers // - service MapperCollectionBuilder, returns MapperCollectionBuilder @@ -19,8 +20,8 @@ namespace Umbraco.Core.Persistence.Mappers // we want to register extra // - service IMapperCollection, returns MappersCollectionBuilder's collection - register.Register(Lifetime.Singleton); - register.Register(factory => factory.GetRequiredService()); + services.AddSingleton(); + services.AddSingleton(factory => factory.GetRequiredService()); } public MapperCollectionBuilder AddCoreMappers() diff --git a/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs b/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs index 70e29fd443..8ce59b49e7 100644 --- a/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs +++ b/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs @@ -86,20 +86,20 @@ namespace Umbraco.Core.Runtime composition.Mappers().AddCoreMappers(); // register the scope provider - composition.RegisterUnique(); // implements both IScopeProvider and IScopeAccessor - composition.RegisterUnique(f => f.GetRequiredService()); - composition.RegisterUnique(f => f.GetRequiredService()); + composition.Services.AddUnique(); // implements both IScopeProvider and IScopeAccessor + composition.Services.AddUnique(f => f.GetRequiredService()); + composition.Services.AddUnique(f => f.GetRequiredService()); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); // register database builder // *not* a singleton, don't want to keep it around composition.Services.AddTransient(); // register manifest parser, will be injected in collection builders where needed - composition.RegisterUnique(); + composition.Services.AddUnique(); // register our predefined validators composition.ManifestValueValidators() @@ -121,15 +121,15 @@ namespace Umbraco.Core.Runtime .Add() .Add(); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); // Used to determine if a datatype/editor should be storing/tracking // references to media item/s composition.DataValueReferenceFactories(); // register a server registrar, by default it's the db registrar - composition.RegisterUnique(f => + composition.Services.AddUnique(f => { var globalSettings = f.GetRequiredService>().Value; @@ -146,7 +146,7 @@ namespace Umbraco.Core.Runtime // by default we'll use the database server messenger with default options (no callbacks), // this will be overridden by the db thing in the corresponding components in the web // project - composition.RegisterUnique(factory + composition.Services.AddUnique(factory => new DatabaseServerMessenger( factory.GetRequiredService(), factory.GetRequiredService(), @@ -168,56 +168,56 @@ namespace Umbraco.Core.Runtime composition.PropertyValueConverters() .Append(composition.TypeLoader.GetTypes()); - composition.RegisterUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(factory + composition.Services.AddUnique(factory => new DefaultShortStringHelper(new DefaultShortStringHelperConfig().WithDefault(factory.GetRequiredService>().Value))); composition.UrlSegmentProviders() .Append(); - composition.RegisterUnique(factory => new MigrationBuilder(factory)); + composition.Services.AddUnique(factory => new MigrationBuilder(factory)); // by default, register a noop factory - composition.RegisterUnique(); + composition.Services.AddUnique(); // by default - composition.RegisterUnique(); + composition.Services.AddUnique(); composition.SetCultureDictionaryFactory(); - composition.Register(f => f.GetRequiredService().CreateDictionary(), Lifetime.Singleton); - composition.RegisterUnique(); + composition.Services.AddSingleton(f => f.GetRequiredService().CreateDictionary()); + composition.Services.AddUnique(); // register the published snapshot accessor - the "current" published snapshot is in the umbraco context - composition.RegisterUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); // register core CMS dashboards and 3rd party types - will be ordered by weight attribute & merged with package.manifest dashboards composition.Dashboards() .Add(composition.TypeLoader.GetTypes()); // will be injected in controllers when needed to invoke rest endpoints on Our - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); // Grid config is not a real config file as we know them - composition.RegisterUnique(); + composition.Services.AddUnique(); // Config manipulator - composition.RegisterUnique(); + composition.Services.AddUnique(); // register the umbraco context factory - // composition.RegisterUnique(); - composition.RegisterUnique(); + // composition.Services.AddUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); // both TinyMceValueConverter (in Core) and RteMacroRenderingValueConverter (in Web) will be // discovered when CoreBootManager configures the converters. We HAVE to remove one of them @@ -236,14 +236,14 @@ namespace Umbraco.Core.Runtime composition.MediaUrlProviders() .Append(); - composition.RegisterUnique(); + composition.Services.AddUnique(); // register properties fallback - composition.RegisterUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); composition.Actions() .Add(() => composition.TypeLoader.GetTypes()); @@ -255,7 +255,7 @@ namespace Umbraco.Core.Runtime composition.TourFilters(); // replace with web implementation - composition.RegisterUnique(); + composition.Services.AddUnique(); // register OEmbed providers - no type scanning - all explicit opt-in of adding types // note: IEmbedProvider is not IDiscoverable - think about it if going for type scanning @@ -297,7 +297,7 @@ namespace Umbraco.Core.Runtime .Append(); // register published router - composition.RegisterUnique(); + composition.Services.AddUnique(); // register *all* checks, except those marked [HideFromTypeFinder] of course composition.HealthChecks() @@ -307,7 +307,7 @@ namespace Umbraco.Core.Runtime composition.WithCollectionBuilder() .Add(() => composition.TypeLoader.GetTypes()); - composition.RegisterUnique(); + composition.Services.AddUnique(); composition.ContentFinders() // all built-in finders in the correct order, @@ -325,52 +325,52 @@ namespace Umbraco.Core.Runtime .Add(() => composition.TypeLoader.GetTypes()); // replace some services - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); // register distributed cache - composition.RegisterUnique(f => new DistributedCache(f.GetRequiredService(), f.GetRequiredService())); + composition.Services.AddUnique(f => new DistributedCache(f.GetRequiredService(), f.GetRequiredService())); composition.Services.AddScoped(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); - composition.Register(factory => + composition.Services.AddUnique(); + composition.Services.AddScoped(factory => { var umbCtx = factory.GetRequiredService(); return new PublishedContentQuery(umbCtx.UmbracoContext.PublishedSnapshot, factory.GetRequiredService(), factory.GetRequiredService()); - }, Lifetime.Request); + }); - composition.RegisterUnique(); + composition.Services.AddUnique(); // register the http context and umbraco context accessors // we *should* use the HttpContextUmbracoContextAccessor, however there are cases when // we have no http context, eg when booting Umbraco or in background threads, so instead // let's use an hybrid accessor that can fall back to a ThreadStatic context. - composition.RegisterUnique(); + composition.Services.AddUnique(); // register accessors for cultures - composition.RegisterUnique(); + composition.Services.AddUnique(); composition.Services.AddSingleton(); - composition.RegisterUnique(); + composition.Services.AddUnique(); // Register noop versions for examine to be overridden by examine - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); } } } diff --git a/src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs b/src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs index b226169f12..dae8bcbf69 100644 --- a/src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs +++ b/src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs @@ -16,7 +16,6 @@ using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Mappers; -using Umbraco.Infrastructure.Composing; namespace Umbraco.Core.Runtime { @@ -185,7 +184,7 @@ namespace Umbraco.Core.Runtime composition.RegisterEssentials(Logger, RuntimeLoggerFactory, Profiler, ProfilingLogger, MainDom, AppCaches, databaseFactory, typeLoader, _state, TypeFinder, IOHelper, UmbracoVersion, DbProviderFactoryCreator, HostingEnvironment, BackOfficeInfo); // register ourselves (TODO: Should we put this in RegisterEssentials?) - composition.Register(_ => this, Lifetime.Singleton); + composition.Services.AddSingleton(_ => this); // run handlers OnRuntimeEssentials(composition, AppCaches, typeLoader, databaseFactory); diff --git a/src/Umbraco.Infrastructure/Search/ExamineComposer.cs b/src/Umbraco.Infrastructure/Search/ExamineComposer.cs index 58de71d920..24e32949ae 100644 --- a/src/Umbraco.Infrastructure/Search/ExamineComposer.cs +++ b/src/Umbraco.Infrastructure/Search/ExamineComposer.cs @@ -29,9 +29,9 @@ namespace Umbraco.Web.Search composition.Services.AddSingleton(); composition.Services.AddSingleton(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(factory => + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(factory => new ContentValueSetBuilder( factory.GetRequiredService(), factory.GetRequiredService(), @@ -39,7 +39,7 @@ namespace Umbraco.Web.Search factory.GetRequiredService(), factory.GetRequiredService(), true)); - composition.RegisterUnique(factory => + composition.Services.AddUnique(factory => new ContentValueSetBuilder( factory.GetRequiredService(), factory.GetRequiredService(), @@ -47,9 +47,9 @@ namespace Umbraco.Web.Search factory.GetRequiredService(), factory.GetRequiredService(), false)); - composition.RegisterUnique, MediaValueSetBuilder>(); - composition.RegisterUnique, MemberValueSetBuilder>(); - composition.RegisterUnique(); + composition.Services.AddUnique, MediaValueSetBuilder>(); + composition.Services.AddUnique, MemberValueSetBuilder>(); + composition.Services.AddUnique(); } } } diff --git a/src/Umbraco.Infrastructure/Search/SearchableTreeCollectionBuilder.cs b/src/Umbraco.Infrastructure/Search/SearchableTreeCollectionBuilder.cs index 847264ee03..a5e940b4a6 100644 --- a/src/Umbraco.Infrastructure/Search/SearchableTreeCollectionBuilder.cs +++ b/src/Umbraco.Infrastructure/Search/SearchableTreeCollectionBuilder.cs @@ -1,4 +1,5 @@ -using Umbraco.Core.Composing; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Core.Composing; using Umbraco.Web.Trees; namespace Umbraco.Web.Search @@ -8,6 +9,6 @@ namespace Umbraco.Web.Search protected override SearchableTreeCollectionBuilder This => this; //per request because generally an instance of ISearchableTree is a controller - protected override Lifetime CollectionLifetime => Lifetime.Request; + protected override ServiceLifetime CollectionLifetime => ServiceLifetime.Scoped; } } diff --git a/src/Umbraco.Infrastructure/WebAssets/WebAssetsComposer.cs b/src/Umbraco.Infrastructure/WebAssets/WebAssetsComposer.cs index bea056c69c..b907d07627 100644 --- a/src/Umbraco.Infrastructure/WebAssets/WebAssetsComposer.cs +++ b/src/Umbraco.Infrastructure/WebAssets/WebAssetsComposer.cs @@ -8,7 +8,7 @@ namespace Umbraco.Web.WebAssets public override void Compose(Composition composition) { base.Compose(composition); - composition.RegisterUnique(); + composition.Services.AddUnique(); } } } diff --git a/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs index f72f3e6de2..03d90616ba 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs @@ -20,13 +20,13 @@ namespace Umbraco.ModelsBuilder.Embedded.Compose { composition.Components().Append(); composition.Services.AddSingleton(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(factory => + composition.Services.AddUnique(); + composition.Services.AddUnique(factory => { var config = factory.GetRequiredService>().Value; if (config.ModelsMode == ModelsMode.PureLive) diff --git a/src/Umbraco.PublishedCache.NuCache/NuCacheComposer.cs b/src/Umbraco.PublishedCache.NuCache/NuCacheComposer.cs index 8ebd9d31b9..ea8863dbd7 100644 --- a/src/Umbraco.PublishedCache.NuCache/NuCacheComposer.cs +++ b/src/Umbraco.PublishedCache.NuCache/NuCacheComposer.cs @@ -20,12 +20,12 @@ namespace Umbraco.Web.PublishedCache.NuCache // register the NuCache published snapshot service // must register default options, required in the service ctor - composition.Register(factory => new PublishedSnapshotServiceOptions()); + composition.Services.AddTransient(factory => new PublishedSnapshotServiceOptions()); composition.SetPublishedSnapshotService(); // replace this service since we want to improve the content/media // mapping lookups if we are using nucache. - composition.RegisterUnique(factory => + composition.Services.AddUnique(factory => { var idkSvc = new IdKeyMap(factory.GetRequiredService()); var publishedSnapshotService = factory.GetRequiredService() as PublishedSnapshotService; diff --git a/src/Umbraco.TestData/LoadTestController.cs b/src/Umbraco.TestData/LoadTestController.cs index 5d044d56e3..fbb031c6db 100644 --- a/src/Umbraco.TestData/LoadTestController.cs +++ b/src/Umbraco.TestData/LoadTestController.cs @@ -10,6 +10,7 @@ using System.Web.Routing; using System.Diagnostics; using Umbraco.Core.Composing; using System.Configuration; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core.Strings; // see https://github.com/Shazwazza/UmbracoScripts/tree/master/src/LoadTesting @@ -368,7 +369,7 @@ namespace Umbraco.TestData if (ConfigurationManager.AppSettings["Umbraco.TestData.Enabled"] != "true") return; - composition.Register(typeof(LoadTestController), Lifetime.Request); + composition.Services.AddScoped(typeof(LoadTestController)); } } } diff --git a/src/Umbraco.Tests.Common/TestHelperBase.cs b/src/Umbraco.Tests.Common/TestHelperBase.cs index 0357b7f4ba..095879209a 100644 --- a/src/Umbraco.Tests.Common/TestHelperBase.cs +++ b/src/Umbraco.Tests.Common/TestHelperBase.cs @@ -20,7 +20,6 @@ using Umbraco.Net; using Umbraco.Core.Persistence; using Umbraco.Core.Serialization; using Umbraco.Core.Strings; -using Umbraco.Infrastructure.Composing; using Umbraco.Web; using Umbraco.Web.Routing; using Umbraco.Tests.Common.Builders; @@ -122,9 +121,9 @@ namespace Umbraco.Tests.Common public IUmbracoVersion GetUmbracoVersion() => new UmbracoVersion(); - public IRegister GetRegister() + public IServiceCollection GetRegister() { - return ServiceCollectionRegistryAdapter.Wrap(new ServiceCollection()); + return new ServiceCollection(); } public abstract IHostingEnvironment GetHostingEnvironment(); diff --git a/src/Umbraco.Tests.Integration/RuntimeTests.cs b/src/Umbraco.Tests.Integration/RuntimeTests.cs index 88d000b3a8..4070a9ea74 100644 --- a/src/Umbraco.Tests.Integration/RuntimeTests.cs +++ b/src/Umbraco.Tests.Integration/RuntimeTests.cs @@ -12,7 +12,6 @@ using Umbraco.Core.Composing; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Runtime; using Umbraco.Extensions; -using Umbraco.Infrastructure.Composing; using Umbraco.Tests.Common; using Umbraco.Tests.Integration.Extensions; using Umbraco.Tests.Integration.Implementations; @@ -45,10 +44,10 @@ namespace Umbraco.Tests.Integration public void Boot_Core_Runtime() { // TODO: MSDI - cleanup after initial merge. - var umbracoContainer = new ServiceCollectionRegistryAdapter(new ServiceCollection()); + var services = new ServiceCollection().AddLazySupport(); // Special case since we are not using the Generic Host, we need to manually add an AspNetCore service to the container - umbracoContainer.Register(x => Mock.Of()); + services.AddTransient(x => Mock.Of()); var testHelper = new TestHelper(); @@ -64,14 +63,14 @@ namespace Umbraco.Tests.Integration var userPasswordConfigurationSettings = new UserPasswordConfigurationSettings(); var webRoutingSettings = new WebRoutingSettings(); - umbracoContainer.Register(x => Options.Create(globalSettings)); - umbracoContainer.Register(x => Options.Create(contentSettings)); - umbracoContainer.Register(x => Options.Create(coreDebugSettings)); - umbracoContainer.Register(x => Options.Create(nuCacheSettings)); - umbracoContainer.Register(x => Options.Create(requestHandlerSettings)); - umbracoContainer.Register(x => Options.Create(userPasswordConfigurationSettings)); - umbracoContainer.Register(x => Options.Create(webRoutingSettings)); - umbracoContainer.Register(typeof(ILogger<>), typeof(Logger<>), Lifetime.Singleton); + services.AddTransient(x => Options.Create(globalSettings)); + services.AddTransient(x => Options.Create(contentSettings)); + services.AddTransient(x => Options.Create(coreDebugSettings)); + services.AddTransient(x => Options.Create(nuCacheSettings)); + services.AddTransient(x => Options.Create(requestHandlerSettings)); + services.AddTransient(x => Options.Create(userPasswordConfigurationSettings)); + services.AddTransient(x => Options.Create(webRoutingSettings)); + services.AddSingleton(typeof(ILogger<>), typeof(Logger<>)); // Create the core runtime var coreRuntime = new CoreRuntime(globalSettings, connectionStrings, testHelper.GetUmbracoVersion(), @@ -79,7 +78,7 @@ namespace Umbraco.Tests.Integration testHelper.GetHostingEnvironment(), testHelper.GetBackOfficeInfo(), testHelper.DbProviderFactoryCreator, testHelper.MainDom, testHelper.GetTypeFinder(), AppCaches.NoCache); - coreRuntime.Configure(umbracoContainer.Services); + coreRuntime.Configure(services); Assert.IsTrue(coreRuntime.MainDom.IsMainDom); Assert.IsNull(coreRuntime.State.BootFailedException); @@ -88,7 +87,7 @@ namespace Umbraco.Tests.Integration Assert.IsFalse(MyComponent.IsInit); Assert.IsFalse(MyComponent.IsTerminated); - coreRuntime.Start(umbracoContainer.Services.BuildServiceProvider()); + coreRuntime.Start(services.BuildServiceProvider()); Assert.IsTrue(MyComponent.IsInit); Assert.IsFalse(MyComponent.IsTerminated); @@ -116,10 +115,7 @@ namespace Umbraco.Tests.Integration // Add it! services.AddUmbracoConfiguration(hostContext.Configuration); - - // TODO: MSDI - cleanup after initial merge. - var register = new ServiceCollectionRegistryAdapter(services); - services.AddUmbracoCore(webHostEnvironment, register, GetType().Assembly, AppCaches.NoCache, testHelper.GetLoggingConfiguration(), hostContext.Configuration); + services.AddUmbracoCore(webHostEnvironment, GetType().Assembly, AppCaches.NoCache, testHelper.GetLoggingConfiguration(), hostContext.Configuration); }); var host = await hostBuilder.StartAsync(); @@ -158,9 +154,7 @@ namespace Umbraco.Tests.Integration // Add it! services.AddUmbracoConfiguration(hostContext.Configuration); - // TODO: MSDI - cleanup after initial merge. - var register = new ServiceCollectionRegistryAdapter(services); - services.AddUmbracoCore(webHostEnvironment, register, GetType().Assembly, AppCaches.NoCache, testHelper.GetLoggingConfiguration(),hostContext.Configuration); + services.AddUmbracoCore(webHostEnvironment, GetType().Assembly, AppCaches.NoCache, testHelper.GetLoggingConfiguration(),hostContext.Configuration); }); var host = await hostBuilder.StartAsync(); diff --git a/src/Umbraco.Tests.Integration/TestServerTest/UmbracoBuilderExtensions.cs b/src/Umbraco.Tests.Integration/TestServerTest/UmbracoBuilderExtensions.cs index 50918034d5..23b4b17be8 100644 --- a/src/Umbraco.Tests.Integration/TestServerTest/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Tests.Integration/TestServerTest/UmbracoBuilderExtensions.cs @@ -2,7 +2,6 @@ using Umbraco.Core.Cache; using Umbraco.Core.Runtime; using Umbraco.Extensions; -using Umbraco.Infrastructure.Composing; using Umbraco.Tests.Integration.Implementations; using Umbraco.Tests.Integration.Testing; using Umbraco.Web.Common.Builder; @@ -22,11 +21,8 @@ namespace Umbraco.Tests.Integration.TestServerTest return builder.AddWith(nameof(global::Umbraco.Web.Common.Builder.UmbracoBuilderExtensions.WithCore), () => { - // TODO: MSDI - cleanup after initial merge. - var register = new ServiceCollectionRegistryAdapter(builder.Services); builder.Services.AddUmbracoCore( builder.WebHostEnvironment, - register, typeof(UmbracoBuilderExtensions).Assembly, AppCaches.NoCache, // Disable caches in integration tests testHelper.GetLoggingConfiguration(), diff --git a/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs b/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs index 7e6585c2c2..1fc086c019 100644 --- a/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs +++ b/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core; @@ -43,20 +44,20 @@ namespace Umbraco.Tests.Integration.Testing composition.Components().Remove(); composition.Components().Remove(); - composition.RegisterUnique(); - composition.RegisterUnique(factory => Mock.Of()); + composition.Services.AddUnique(); + composition.Services.AddUnique(factory => Mock.Of()); // we don't want persisted nucache files in tests - composition.Register(factory => new PublishedSnapshotServiceOptions { IgnoreLocalDb = true }); + composition.Services.AddTransient(factory => new PublishedSnapshotServiceOptions { IgnoreLocalDb = true }); // ensure all lucene indexes are using RAM directory (no file system) - composition.RegisterUnique(); + composition.Services.AddUnique(); // replace this service so that it can lookup the correct file locations - composition.RegisterUnique(GetLocalizedTextService); + composition.Services.AddUnique(GetLocalizedTextService); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); } @@ -66,7 +67,7 @@ namespace Umbraco.Tests.Integration.Testing /// we don't need to copy files /// /// - private ILocalizedTextService GetLocalizedTextService(IFactory factory) + private ILocalizedTextService GetLocalizedTextService(IServiceProvider factory) { var globalSettings = factory.GetRequiredService>(); var loggerFactory = factory.GetRequiredService(); diff --git a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs index d089c4a4e9..437a282ecf 100644 --- a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs +++ b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs @@ -34,7 +34,6 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Serilog; using Umbraco.Core.Logging.Serilog; -using Umbraco.Infrastructure.Composing; using ConnectionStrings = Umbraco.Core.Configuration.Models.ConnectionStrings; using ILogger = Microsoft.Extensions.Logging.ILogger; @@ -257,11 +256,9 @@ namespace Umbraco.Tests.Integration.Testing // Add it! services.AddUmbracoConfiguration(Configuration); - // TODO: MSDI - cleanup after initial merge. - var register = new ServiceCollectionRegistryAdapter(services); + services.AddUmbracoCore( webHostEnvironment, - register, GetType().Assembly, GetAppCaches(), TestHelper.GetLoggingConfiguration(), diff --git a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentEventsTests.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentEventsTests.cs index 45b0eb0660..ce98e4f5a8 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentEventsTests.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentEventsTests.cs @@ -60,7 +60,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services // base.Compose(); // // Composition.Register(_ => new TestServerRegistrar()); // localhost-only - // Composition.RegisterUnique(); + // composition.Services.AddUnique(); // // Composition.WithCollectionBuilder() // .Add() diff --git a/src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/Filters/ContentModelValidatorTests.cs b/src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/Filters/ContentModelValidatorTests.cs index f97a2db06d..629f9470ac 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/Filters/ContentModelValidatorTests.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/Filters/ContentModelValidatorTests.cs @@ -121,10 +121,10 @@ namespace Umbraco.Tests.Integration.Umbraco.Web.Backoffice.Filters // textService.Setup(x => x.Localize("validation/invalidNull", It.IsAny(), It.IsAny>())).Returns("invalidNull"); // textService.Setup(x => x.Localize("validation/invalidEmpty", It.IsAny(), It.IsAny>())).Returns("invalidEmpty"); // - // Composition.RegisterUnique(x => Mock.Of(x => x.GetDataType(It.IsAny()) == Mock.Of())); - // Composition.RegisterUnique(x => dataTypeService.Object); - // Composition.RegisterUnique(x => contentTypeService.Object); - // Composition.RegisterUnique(x => textService.Object); + // composition.Services.AddUnique(x => Mock.Of(x => x.GetDataType(It.IsAny()) == Mock.Of())); + // composition.Services.AddUnique(x => dataTypeService.Object); + // composition.Services.AddUnique(x => contentTypeService.Object); + // composition.Services.AddUnique(x => textService.Object); // // Composition.WithCollectionBuilder() // .Add() diff --git a/src/Umbraco.Tests.UnitTests/TestHelpers/BaseUsingSqlSyntax.cs b/src/Umbraco.Tests.UnitTests/TestHelpers/BaseUsingSqlSyntax.cs index aa041f7ac8..bf3f14004a 100644 --- a/src/Umbraco.Tests.UnitTests/TestHelpers/BaseUsingSqlSyntax.cs +++ b/src/Umbraco.Tests.UnitTests/TestHelpers/BaseUsingSqlSyntax.cs @@ -1,4 +1,5 @@ using System; +using Microsoft.Extensions.DependencyInjection; using Moq; using NPoco; using NUnit.Framework; @@ -36,9 +37,9 @@ namespace Umbraco.Tests.TestHelpers composition.WithCollectionBuilder() .AddCoreMappers(); - composition.RegisterUnique(_ => SqlContext); + composition.Services.AddUnique(_ => SqlContext); - var factory = composition.CreateFactory(); + var factory = composition.CreateServiceProvider(); var pocoMappers = new NPoco.MapperCollection { new PocoMapper() }; var pocoDataFactory = new FluentPocoDataFactory((type, iPocoDataFactory) => new PocoDataBuilder(type, pocoMappers).Init()); var sqlSyntax = new SqlServerSyntaxProvider(); diff --git a/src/Umbraco.Tests.UnitTests/TestHelpers/CompositionExtenions.cs b/src/Umbraco.Tests.UnitTests/TestHelpers/CompositionExtenions.cs deleted file mode 100644 index cdcc2a88dc..0000000000 --- a/src/Umbraco.Tests.UnitTests/TestHelpers/CompositionExtenions.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using Microsoft.Extensions.DependencyInjection; -using Umbraco.Core.Composing; -using Umbraco.Infrastructure.Composing; - -namespace Umbraco.Tests.UnitTests.TestHelpers -{ - public static class CompositionExtenions - { - public static IFactory CreateFactory(this Composition composition) - { - composition.RegisterBuilders(); - return ServiceProviderFactoryAdapter.Wrap(composition.Services.BuildServiceProvider()); - } - } -} diff --git a/src/Umbraco.Tests.UnitTests/TestHelpers/CompositionExtensions.cs b/src/Umbraco.Tests.UnitTests/TestHelpers/CompositionExtensions.cs new file mode 100644 index 0000000000..6a4f228070 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/TestHelpers/CompositionExtensions.cs @@ -0,0 +1,16 @@ +using System; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Core.Composing; + +namespace Umbraco.Tests.UnitTests.TestHelpers +{ + public static class CompositionExtensions + { + [Obsolete("This extension method exists only to ease migration, please refactor")] + public static IServiceProvider CreateServiceProvider(this Composition composition) + { + composition.RegisterBuilders(); + return composition.Services.BuildServiceProvider(); + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/TestHelpers/TestHelper.cs b/src/Umbraco.Tests.UnitTests/TestHelpers/TestHelper.cs index b3d893acd5..e7d6eec391 100644 --- a/src/Umbraco.Tests.UnitTests/TestHelpers/TestHelper.cs +++ b/src/Umbraco.Tests.UnitTests/TestHelpers/TestHelper.cs @@ -279,7 +279,7 @@ namespace Umbraco.Tests.TestHelpers public static IUmbracoVersion GetUmbracoVersion() => _testHelperInternal.GetUmbracoVersion(); - public static IServiceCollection GetServiceCollection() => new ServiceCollection(); + public static IServiceCollection GetServiceCollection() => new ServiceCollection().AddLazySupport(); public static IHostingEnvironment GetHostingEnvironment() => _testHelperInternal.GetHostingEnvironment(); diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Components/ComponentTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Components/ComponentTests.cs index 1f6827784f..b96065b928 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Components/ComponentTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Components/ComponentTests.cs @@ -18,7 +18,6 @@ using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Scoping; -using Umbraco.Infrastructure.Composing; using Umbraco.Tests.TestHelpers; namespace Umbraco.Tests.UnitTests.Umbraco.Core.Components @@ -31,11 +30,11 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Components private static readonly List Initialized = new List(); private static readonly List Terminated = new List(); - private static IFactory MockFactory(Action> setup = null) + private static IServiceProvider MockFactory(Action> setup = null) { // FIXME: use IUmbracoDatabaseFactory vs UmbracoDatabaseFactory, clean it all up! - var mock = new Mock(); + var mock = new Mock(); var loggerFactory = NullLoggerFactory.Instance; var logger = loggerFactory.CreateLogger("GenericLogger"); var typeFinder = TestHelper.GetTypeFinder(); @@ -47,11 +46,12 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Components var mediaFileSystem = Mock.Of(); var p = new ScopeProvider(f, fs, Options.Create(coreDebug), mediaFileSystem, loggerFactory.CreateLogger(), loggerFactory, typeFinder, NoAppCache.Instance); - mock.Setup(x => x.GetRequiredService(typeof (ILogger))).Returns(logger); - mock.Setup(x => x.GetRequiredService(typeof(ILoggerFactory))).Returns(loggerFactory); - mock.Setup(x => x.GetRequiredService(typeof (IProfilingLogger))).Returns(new ProfilingLogger(logger, Mock.Of())); - mock.Setup(x => x.GetRequiredService(typeof (IUmbracoDatabaseFactory))).Returns(f); - mock.Setup(x => x.GetRequiredService(typeof (IScopeProvider))).Returns(p); + mock.Setup(x => x.GetService(typeof (ILogger))).Returns(logger); + mock.Setup(x => x.GetService(typeof(ILogger))).Returns(loggerFactory.CreateLogger); + mock.Setup(x => x.GetService(typeof(ILoggerFactory))).Returns(loggerFactory); + mock.Setup(x => x.GetService(typeof (IProfilingLogger))).Returns(new ProfilingLogger(logger, Mock.Of())); + mock.Setup(x => x.GetService(typeof (IUmbracoDatabaseFactory))).Returns(f); + mock.Setup(x => x.GetService(typeof (IScopeProvider))).Returns(p); setup?.Invoke(mock); return mock.Object; @@ -89,7 +89,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Components var factory = MockFactory(m => { m.Setup(x => x.GetService(It.Is(t => t == typeof(ISomeResource)))).Returns(() => new SomeResource()); - m.Setup(x => x.GetRequiredService(It.IsAny())).Returns((type) => + m.Setup(x => x.GetService(It.IsAny())).Returns((type) => { if (type == typeof(Composer1)) return new Composer1(); if (type == typeof(Composer5)) return new Composer5(); @@ -101,7 +101,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Components }); var builder = composition.WithCollectionBuilder(); - builder.RegisterWith(ServiceCollectionRegistryAdapter.Wrap(register)); + builder.RegisterWith(register); var components = builder.CreateCollection(factory); Assert.IsEmpty(components); @@ -211,7 +211,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Components var factory = MockFactory(m => { m.Setup(x => x.GetService(It.Is(t => t == typeof (ISomeResource)))).Returns(() => new SomeResource()); - m.Setup(x => x.GetRequiredService(It.IsAny())).Returns((type) => + m.Setup(x => x.GetService(It.IsAny())).Returns((type) => { if (type == typeof(Composer1)) return new Composer1(); if (type == typeof(Composer5)) return new Composer5(); @@ -233,7 +233,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Components AssertTypeArray(TypeArray(), Composed); var builder = composition.WithCollectionBuilder(); - builder.RegisterWith(ServiceCollectionRegistryAdapter.Wrap(register)); + builder.RegisterWith(register); var components = builder.CreateCollection(factory); Assert.IsEmpty(Initialized); @@ -289,7 +289,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Components Composed.Clear(); composers.Compose(); var builder = composition.WithCollectionBuilder(); - builder.RegisterWith(ServiceCollectionRegistryAdapter.Wrap(register)); + builder.RegisterWith(register); var components = builder.CreateCollection(factory); Assert.AreEqual(3, Composed.Count); Assert.AreEqual(typeof(Composer4), Composed[0]); diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/CollectionBuildersTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/CollectionBuildersTests.cs index 241ab5e6ec..cb8a88c3ec 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/CollectionBuildersTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/CollectionBuildersTests.cs @@ -8,7 +8,6 @@ using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Logging; -using Umbraco.Infrastructure.Composing; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.UnitTests.TestHelpers; @@ -22,15 +21,6 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing [SetUp] public void Setup() { - // var registerMock = new Mock(); - // var factoryMock = new Mock(); - // registerMock.Setup(x => x.CreateFactory()).Returns(factoryMock.Object); - // factoryMock.Setup(x => x.GetInstance(typeof(Resolved1))).Returns(new Resolved1()); - // factoryMock.Setup(x => x.GetInstance(typeof(Resolved2))).Returns(new Resolved2()); - // factoryMock.Setup(x => x.GetInstance(typeof(Resolved3))).Returns(new Resolved3()); - // factoryMock.Setup(x => x.GetInstance(typeof(Resolved4))).Returns(new Resolved4()); - - var register = TestHelper.GetServiceCollection(); _composition = new Composition(register, TestHelper.GetMockedTypeLoader(), Mock.Of(), Mock.Of(), TestHelper.IOHelper, AppCaches.NoCache); } @@ -52,7 +42,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing Assert.IsFalse(builder.Has()); //Assert.IsFalse(col.ContainsType()); // does not compile - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); AssertCollection(col, typeof(Resolved1), typeof(Resolved2)); } @@ -68,7 +58,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing Assert.IsFalse(builder.Has()); Assert.IsFalse(builder.Has()); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); AssertCollection(col); } @@ -80,7 +70,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing .Append() .Append(); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); Assert.Throws(() => builder.Clear()); @@ -97,7 +87,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing Assert.IsTrue(builder.Has()); Assert.IsFalse(builder.Has()); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); AssertCollection(col, typeof(Resolved1), typeof(Resolved2)); } @@ -107,7 +97,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing { var builder = _composition.WithCollectionBuilder(); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); Assert.Throws(() => @@ -122,7 +112,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing builder.Append(); builder.Append(); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); AssertCollection(col, typeof(Resolved1)); @@ -151,7 +141,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing Assert.IsFalse(builder.Has()); Assert.IsFalse(builder.Has()); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); AssertCollection(col, typeof(Resolved1)); } @@ -164,7 +154,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing .Append() .Remove(); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); AssertCollection(col, typeof(Resolved1), typeof(Resolved2)); } @@ -176,7 +166,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing .Append() .Append(); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); Assert.Throws(() => builder.Remove() // throws @@ -195,7 +185,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing Assert.IsTrue(builder.Has()); Assert.IsTrue(builder.Has()); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); AssertCollection(col, typeof(Resolved3), typeof(Resolved1), typeof(Resolved2)); } @@ -207,7 +197,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing .Append() .Append(); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); Assert.Throws(() => builder.Insert() // throws @@ -222,7 +212,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing .Append() .Insert(); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); AssertCollection(col, typeof(Resolved2), typeof(Resolved1)); } @@ -233,7 +223,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing var builder = _composition.WithCollectionBuilder(); builder.Insert(); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); AssertCollection(col, typeof(Resolved2)); } @@ -266,7 +256,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing Assert.IsTrue(builder.Has()); Assert.IsTrue(builder.Has()); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); AssertCollection(col, typeof(Resolved1), typeof(Resolved3), typeof(Resolved2)); } @@ -283,7 +273,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing Assert.IsTrue(builder.Has()); Assert.IsTrue(builder.Has()); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); AssertCollection(col, typeof(Resolved1), typeof(Resolved3), typeof(Resolved2)); } @@ -300,7 +290,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing Assert.IsTrue(builder.Has()); Assert.IsTrue(builder.Has()); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); AssertCollection(col, typeof(Resolved1), typeof(Resolved2), typeof(Resolved3)); } @@ -312,7 +302,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing .Append() .Append(); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); Assert.Throws(() => builder.InsertBefore() @@ -327,7 +317,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing .Append() .InsertBefore(); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); AssertCollection(col, typeof(Resolved2), typeof(Resolved1)); } @@ -354,17 +344,17 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing // but the container manages the scope, so to test the scope // the collection must come from the container - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); - using (factory.BeginScope()) + using (var scope = factory.CreateScope()) { - var col1 = factory.GetRequiredService(); + var col1 = scope.ServiceProvider.GetRequiredService(); AssertCollection(col1, typeof(Resolved1), typeof(Resolved2)); - var col2 = factory.GetRequiredService(); + var col2 = scope.ServiceProvider.GetRequiredService(); AssertCollection(col2, typeof(Resolved1), typeof(Resolved2)); - AssertSameCollection(factory, col1, col2); + AssertSameCollection(scope.ServiceProvider, col1, col2); } } @@ -380,7 +370,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing // but the container manages the scope, so to test the scope // the collection must come from the container - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col1 = factory.GetRequiredService(); AssertCollection(col1, typeof(Resolved1), typeof(Resolved2)); @@ -399,7 +389,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing .Insert() .InsertBefore(); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col1 = builder.CreateCollection(factory); AssertCollection(col1, typeof(Resolved1), typeof(Resolved2), typeof(Resolved3)); } @@ -417,21 +407,21 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing TestCollection col1A, col1B; - var wrapper = (ServiceProviderFactoryAdapter)_composition.CreateFactory(); + var serviceProvider = _composition.CreateServiceProvider(); - using (var scope = wrapper.ServiceProvider.CreateScope()) + using (var scope = serviceProvider.CreateScope()) { col1A = scope.ServiceProvider.GetRequiredService(); col1B = scope.ServiceProvider.GetRequiredService(); AssertCollection(col1A, typeof(Resolved1), typeof(Resolved2)); AssertCollection(col1B, typeof(Resolved1), typeof(Resolved2)); - AssertSameCollection(wrapper, col1A, col1B); + AssertSameCollection(serviceProvider, col1A, col1B); } TestCollection col2; - using (var scope = wrapper.ServiceProvider.CreateScope()) + using (var scope = serviceProvider.CreateScope()) { col2 = scope.ServiceProvider.GetRequiredService(); } @@ -447,7 +437,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing .Add() .Add(); - var factory = _composition.CreateFactory(); + var factory = _composition.CreateServiceProvider(); var col = builder.CreateCollection(factory); AssertCollection(col, typeof(Resolved2), typeof(Resolved1)); } @@ -462,7 +452,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing Assert.IsInstanceOf(expected[i], colA[i]); } - private static void AssertSameCollection(IFactory factory, IEnumerable col1, IEnumerable col2) + private static void AssertSameCollection(IServiceProvider factory, IEnumerable col1, IEnumerable col2) { Assert.AreSame(col1, col2); @@ -531,7 +521,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing { protected override TestCollectionBuilderTransient This => this; - protected override Lifetime CollectionLifetime => Lifetime.Transient; // transient + protected override ServiceLifetime CollectionLifetime => ServiceLifetime.Transient; // transient } // ReSharper disable once ClassNeverInstantiated.Local @@ -539,7 +529,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing { protected override TestCollectionBuilderScope This => this; - protected override Lifetime CollectionLifetime => Lifetime.Scope; + protected override ServiceLifetime CollectionLifetime => ServiceLifetime.Scoped; } // ReSharper disable once ClassNeverInstantiated.Local diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/LazyCollectionBuilderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/LazyCollectionBuilderTests.cs index f73fcd83c0..e0a8c28518 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/LazyCollectionBuilderTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/LazyCollectionBuilderTests.cs @@ -37,7 +37,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing .Add() .Add(); - var factory = composition.CreateFactory(); + var factory = composition.CreateServiceProvider(); var values = factory.GetRequiredService(); @@ -62,7 +62,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing .Add(() => new[] { typeof(TransientObject3), typeof(TransientObject2) }) .Add(() => new[] { typeof(TransientObject1) }); - var factory = composition.CreateFactory(); + var factory = composition.CreateServiceProvider(); var values = factory.GetRequiredService(); @@ -88,7 +88,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing .Add() .Add(() => new[] { typeof(TransientObject1) }); - var factory = composition.CreateFactory(); + var factory = composition.CreateServiceProvider(); var values = factory.GetRequiredService(); @@ -120,7 +120,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing Assert.Throws(() => { // but throws here when trying to register the types, right before creating the factory - var factory = composition.CreateFactory(); + var factory = composition.CreateServiceProvider(); }); } @@ -135,7 +135,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing .Add(() => new[] { typeof(TransientObject3), typeof(TransientObject2), typeof(TransientObject1) }) .Exclude(); - var factory = composition.CreateFactory(); + var factory = composition.CreateServiceProvider(); var values = factory.GetRequiredService(); @@ -173,7 +173,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing { protected override TestCollectionBuilder This => this; - protected override Lifetime CollectionLifetime => Lifetime.Transient; // transient + protected override ServiceLifetime CollectionLifetime => ServiceLifetime.Transient; // transient } // ReSharper disable once ClassNeverInstantiated.Local diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/PackageActionCollectionTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/PackageActionCollectionTests.cs index 5b2aae9fc2..b13da91a96 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/PackageActionCollectionTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/PackageActionCollectionTests.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Xml; using System.Xml.Linq; +using Microsoft.Extensions.DependencyInjection; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -28,7 +29,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Composing composition.WithCollectionBuilder() .Add(() => expectedPackageActions); - var factory = composition.CreateFactory(); + var factory = composition.CreateServiceProvider(); var actions = factory.GetRequiredService(); Assert.AreEqual(2, actions.Count()); diff --git a/src/Umbraco.Tests/Cache/DistributedCacheBinderTests.cs b/src/Umbraco.Tests/Cache/DistributedCacheBinderTests.cs index 1632944895..3598c75cf7 100644 --- a/src/Umbraco.Tests/Cache/DistributedCacheBinderTests.cs +++ b/src/Umbraco.Tests/Cache/DistributedCacheBinderTests.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Threading; using Moq; using NUnit.Framework; +using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Events; @@ -30,7 +31,7 @@ namespace Umbraco.Tests.Cache base.Compose(composition); // refreshers.HandleEvents wants a UmbracoContext // which wants these - composition.RegisterUnique(_ => Mock.Of()); + composition.Services.AddUnique(_ => Mock.Of()); composition.WithCollectionBuilder(); } diff --git a/src/Umbraco.Tests/Cache/PublishedCache/PublishedContentCacheTests.cs b/src/Umbraco.Tests/Cache/PublishedCache/PublishedContentCacheTests.cs index 3ac7efd467..6f9a0a35a6 100644 --- a/src/Umbraco.Tests/Cache/PublishedCache/PublishedContentCacheTests.cs +++ b/src/Umbraco.Tests/Cache/PublishedCache/PublishedContentCacheTests.cs @@ -1,5 +1,6 @@ using System.Linq; using System.Xml; +using Microsoft.Extensions.DependencyInjection; using Moq; using NUnit.Framework; using Umbraco.Core; diff --git a/src/Umbraco.Tests/Cache/PublishedCache/PublishedMediaCacheTests.cs b/src/Umbraco.Tests/Cache/PublishedCache/PublishedMediaCacheTests.cs index 810532367a..cfcf7a82d8 100644 --- a/src/Umbraco.Tests/Cache/PublishedCache/PublishedMediaCacheTests.cs +++ b/src/Umbraco.Tests/Cache/PublishedCache/PublishedMediaCacheTests.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Xml; using Examine; +using Microsoft.Extensions.DependencyInjection; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; diff --git a/src/Umbraco.Tests/IO/FileSystemsTests.cs b/src/Umbraco.Tests/IO/FileSystemsTests.cs index 039ded5e4e..8623b015a4 100644 --- a/src/Umbraco.Tests/IO/FileSystemsTests.cs +++ b/src/Umbraco.Tests/IO/FileSystemsTests.cs @@ -15,7 +15,6 @@ using Umbraco.Core.IO; using Umbraco.Core.IO.MediaPathSchemes; using Umbraco.Core.Logging; using Umbraco.Core.Services; -using Umbraco.Infrastructure.Composing; using Umbraco.Tests.TestHelpers; using Umbraco.Web; using FileSystems = Umbraco.Core.IO.FileSystems; @@ -25,8 +24,8 @@ namespace Umbraco.Tests.IO [TestFixture] public class FileSystemsTests { - private IRegister _register; - private IFactory _factory; + private IServiceCollection _register; + private IServiceProvider _factory; [SetUp] public void Setup() @@ -34,7 +33,7 @@ namespace Umbraco.Tests.IO _register = TestHelper.GetRegister(); var composition = new Composition( - (_register as ServiceCollectionRegistryAdapter).Services, + _register, TestHelper.GetMockedTypeLoader(), Mock.Of(), Mock.Of(), @@ -42,22 +41,22 @@ namespace Umbraco.Tests.IO AppCaches.NoCache ); - composition.Register(_ => Mock.Of()); + composition.Services.AddTransient(_ => Mock.Of()); composition.Services.AddTransient(); - composition.Register(typeof(ILogger<>), typeof(Logger<>)); - composition.Register(_ => TestHelper.ShortStringHelper); - composition.Register(_ => TestHelper.IOHelper); - composition.RegisterUnique(); - composition.RegisterUnique(TestHelper.IOHelper); - composition.RegisterUnique(TestHelper.GetHostingEnvironment()); + composition.Services.AddTransient(typeof(ILogger<>), typeof(Logger<>)); + composition.Services.AddTransient(_ => TestHelper.ShortStringHelper); + composition.Services.AddTransient(_ => TestHelper.IOHelper); + composition.Services.AddUnique(); + composition.Services.AddUnique(TestHelper.IOHelper); + composition.Services.AddUnique(TestHelper.GetHostingEnvironment()); var globalSettings = new GlobalSettings(); - composition.Register(x => Microsoft.Extensions.Options.Options.Create(globalSettings)); + composition.Services.AddScoped(x => Microsoft.Extensions.Options.Options.Create(globalSettings)); composition.ComposeFileSystems(); - _factory = composition.CreateFactory(); + _factory = composition.CreateServiceProvider(); // make sure we start clean // because some tests will create corrupt or weird filesystems diff --git a/src/Umbraco.Tests/IO/ShadowFileSystemTests.cs b/src/Umbraco.Tests/IO/ShadowFileSystemTests.cs index 39052b7894..04900abaf0 100644 --- a/src/Umbraco.Tests/IO/ShadowFileSystemTests.cs +++ b/src/Umbraco.Tests/IO/ShadowFileSystemTests.cs @@ -402,7 +402,7 @@ namespace Umbraco.Tests.IO var phy = new PhysicalFileSystem(_ioHelper, _hostingEnvironment, _logger, path, "ignore"); - var container = Mock.Of(); + var container = Mock.Of(); var globalSettings = Options.Create(new GlobalSettings()); var fileSystems = new FileSystems(container, Mock.Of>(), loggerFactory, _ioHelper, globalSettings, _hostingEnvironment) { IsScoped = () => scopedFileSystems }; var fs = fileSystems.GetFileSystem(phy); @@ -495,7 +495,7 @@ namespace Umbraco.Tests.IO var phy = new PhysicalFileSystem(_ioHelper, _hostingEnvironment, _logger, path, "ignore"); - var container = Mock.Of(); + var container = Mock.Of(); var globalSettings = Options.Create(new GlobalSettings()); var fileSystems = new FileSystems(container, Mock.Of>(), NullLoggerFactory.Instance, _ioHelper, globalSettings, _hostingEnvironment) { IsScoped = () => scopedFileSystems }; var fs = fileSystems.GetFileSystem( phy); @@ -547,7 +547,7 @@ namespace Umbraco.Tests.IO var phy = new PhysicalFileSystem(_ioHelper, _hostingEnvironment, _logger, path, "ignore"); - var container = Mock.Of(); + var container = Mock.Of(); var globalSettings = Options.Create(new GlobalSettings()); var fileSystems = new FileSystems(container, Mock.Of>(), NullLoggerFactory.Instance, _ioHelper, globalSettings, _hostingEnvironment) { IsScoped = () => scopedFileSystems }; var fs = fileSystems.GetFileSystem( phy); diff --git a/src/Umbraco.Tests/Issues/U9560.cs b/src/Umbraco.Tests/Issues/U9560.cs index 279d6798aa..5ce89a583b 100644 --- a/src/Umbraco.Tests/Issues/U9560.cs +++ b/src/Umbraco.Tests/Issues/U9560.cs @@ -1,4 +1,5 @@ using System; +using Microsoft.Extensions.DependencyInjection; using NUnit.Framework; using Umbraco.Core.Models; using Umbraco.Core.Persistence; diff --git a/src/Umbraco.Tests/Models/ContentXmlTest.cs b/src/Umbraco.Tests/Models/ContentXmlTest.cs index 0aff0e7ad3..c512ac21c2 100644 --- a/src/Umbraco.Tests/Models/ContentXmlTest.cs +++ b/src/Umbraco.Tests/Models/ContentXmlTest.cs @@ -1,5 +1,6 @@ using System.Linq; using System.Xml.Linq; +using Microsoft.Extensions.DependencyInjection; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Services; diff --git a/src/Umbraco.Tests/Models/MediaXmlTest.cs b/src/Umbraco.Tests/Models/MediaXmlTest.cs index 83184dcb82..92fd58d23c 100644 --- a/src/Umbraco.Tests/Models/MediaXmlTest.cs +++ b/src/Umbraco.Tests/Models/MediaXmlTest.cs @@ -1,5 +1,6 @@ using System.Linq; using System.Xml.Linq; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Moq; diff --git a/src/Umbraco.Tests/Packaging/PackageDataInstallationTests.cs b/src/Umbraco.Tests/Packaging/PackageDataInstallationTests.cs index 0576aa45d6..c94f9f5403 100644 --- a/src/Umbraco.Tests/Packaging/PackageDataInstallationTests.cs +++ b/src/Umbraco.Tests/Packaging/PackageDataInstallationTests.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Threading; using System.Xml.Linq; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; diff --git a/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs b/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs index d2b88fabff..e6816ba779 100644 --- a/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs +++ b/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Moq; diff --git a/src/Umbraco.Tests/Published/ConvertersTests.cs b/src/Umbraco.Tests/Published/ConvertersTests.cs index 1541f5d446..428011f243 100644 --- a/src/Umbraco.Tests/Published/ConvertersTests.cs +++ b/src/Umbraco.Tests/Published/ConvertersTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Moq; @@ -15,7 +16,6 @@ using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; -using Umbraco.Infrastructure.Composing; using Umbraco.Tests.PublishedContent; using Umbraco.Tests.TestHelpers; using Umbraco.Web; @@ -35,7 +35,7 @@ namespace Umbraco.Tests.Published var register = TestHelper.GetRegister(); var composition = new Composition( - (register as ServiceCollectionRegistryAdapter).Services, + register, TestHelper.GetMockedTypeLoader(), Mock.Of(), Mock.Of(), @@ -52,7 +52,7 @@ namespace Umbraco.Tests.Published typeof (PublishedSnapshotTestObjects.TestElementModel1), typeof (PublishedSnapshotTestObjects.TestElementModel2), typeof (PublishedSnapshotTestObjects.TestContentModel1), typeof (PublishedSnapshotTestObjects.TestContentModel2), }, Mock.Of()); - register.Register(f => factory); + register.AddTransient(f => factory); @@ -63,9 +63,9 @@ namespace Umbraco.Tests.Published publishedSnapshotMock.Setup(x => x.Content).Returns(cacheMock.Object); var publishedSnapshotAccessorMock = new Mock(); publishedSnapshotAccessorMock.Setup(x => x.PublishedSnapshot).Returns(publishedSnapshotMock.Object); - register.Register(f => publishedSnapshotAccessorMock.Object); + register.AddTransient(f => publishedSnapshotAccessorMock.Object); - var registerFactory = composition.CreateFactory(); + var registerFactory = composition.CreateServiceProvider(); var converters = registerFactory.GetRequiredService(); var dataTypeServiceMock = new Mock(); diff --git a/src/Umbraco.Tests/PublishedContent/NuCacheChildrenTests.cs b/src/Umbraco.Tests/PublishedContent/NuCacheChildrenTests.cs index 9e36e867a4..55c56348a4 100644 --- a/src/Umbraco.Tests/PublishedContent/NuCacheChildrenTests.cs +++ b/src/Umbraco.Tests/PublishedContent/NuCacheChildrenTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Data; using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; @@ -54,14 +55,12 @@ namespace Umbraco.Tests.PublishedContent private void Init(Func> kits) { - Current.Reset(); - - var factory = Mock.Of(); + var factory = Mock.Of(); Current.Factory = factory; var hostingEnvironment = Mock.Of(); - Mock.Get(factory).Setup(x => x.GetRequiredService(typeof(IPublishedModelFactory))).Returns(PublishedModelFactory); + Mock.Get(factory).Setup(x => x.GetService(typeof(IPublishedModelFactory))).Returns(PublishedModelFactory); var runtime = Mock.Of(); Mock.Get(runtime).Setup(x => x.Level).Returns(RuntimeLevel.Run); @@ -172,7 +171,7 @@ namespace Umbraco.Tests.PublishedContent // invariant is the current default _variationAccesor.VariationContext = new VariationContext(); - Mock.Get(factory).Setup(x => x.GetRequiredService(typeof(IVariationContextAccessor))).Returns(_variationAccesor); + Mock.Get(factory).Setup(x => x.GetService(typeof(IVariationContextAccessor))).Returns(_variationAccesor); } private IEnumerable GetNestedVariantKits() diff --git a/src/Umbraco.Tests/PublishedContent/NuCacheTests.cs b/src/Umbraco.Tests/PublishedContent/NuCacheTests.cs index 4d5fcc6515..56f5804f12 100644 --- a/src/Umbraco.Tests/PublishedContent/NuCacheTests.cs +++ b/src/Umbraco.Tests/PublishedContent/NuCacheTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Data; using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Moq; @@ -47,13 +48,12 @@ namespace Umbraco.Tests.PublishedContent private void Init() { - Current.Reset(); - - var factory = Mock.Of(); + var factory = Mock.Of(); Current.Factory = factory; var publishedModelFactory = new NoopPublishedModelFactory(); - Mock.Get(factory).Setup(x => x.GetRequiredService(typeof(IPublishedModelFactory))).Returns(publishedModelFactory); + Mock.Get(factory).Setup(x => x.GetService(typeof(IPublishedModelFactory))).Returns(publishedModelFactory); + Mock.Get(factory).Setup(x => x.GetService(typeof(IPublishedValueFallback))).Returns(new NoopPublishedValueFallback()); // create a content node kit var kit = new ContentNodeKit @@ -212,7 +212,7 @@ namespace Umbraco.Tests.PublishedContent // invariant is the current default _variationAccesor.VariationContext = new VariationContext(); - Mock.Get(factory).Setup(x => x.GetRequiredService(typeof(IVariationContextAccessor))).Returns(_variationAccesor); + Mock.Get(factory).Setup(x => x.GetService(typeof(IVariationContextAccessor))).Returns(_variationAccesor); } [Test] diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentLanguageVariantTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentLanguageVariantTests.cs index d02a49385d..547e7a637f 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedContentLanguageVariantTests.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedContentLanguageVariantTests.cs @@ -4,6 +4,7 @@ using System.Collections.ObjectModel; using System.Linq; using Moq; using NUnit.Framework; +using Umbraco.Core; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; @@ -23,7 +24,7 @@ namespace Umbraco.Tests.PublishedContent { base.Compose(); - Composition.RegisterUnique(_ => GetServiceContext()); + Composition.Services.AddUnique(_ => GetServiceContext()); } protected ServiceContext GetServiceContext() diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs index 2084a809b3..62fabf4a71 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs @@ -2,6 +2,7 @@ using System.IO; using System.Linq; using System.Web.Routing; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Moq; @@ -45,7 +46,7 @@ namespace Umbraco.Tests.PublishedContent { base.Compose(); - Composition.RegisterUnique(f => new PublishedModelFactory(f.GetRequiredService().GetTypes(), f.GetRequiredService())); + Composition.Services.AddUnique(f => new PublishedModelFactory(f.GetRequiredService().GetTypes(), f.GetRequiredService())); } protected override TypeLoader CreateTypeLoader(IIOHelper ioHelper, ITypeFinder typeFinder, IAppPolicyCache runtimeCache, ILogger logger, IProfilingLogger profilingLogger , IHostingEnvironment hostingEnvironment) @@ -86,13 +87,6 @@ namespace Umbraco.Tests.PublishedContent return umbracoContext; } - public override void TearDown() - { - base.TearDown(); - - Current.Reset(); - } - private SolidPublishedSnapshot CreatePublishedSnapshot() { var dataTypeService = new TestObjects.TestDataTypeService( diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs index b8011d160d..c4bcd86e36 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs @@ -17,6 +17,7 @@ using Umbraco.Web.Templates; using Umbraco.Web.Routing; using Umbraco.Core.Media; using System; +using Microsoft.Extensions.DependencyInjection; namespace Umbraco.Tests.PublishedContent { diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs index 5bf7120e02..50889bacd9 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using NUnit.Framework; @@ -42,11 +43,11 @@ namespace Umbraco.Tests.PublishedContent { base.Compose(); _publishedSnapshotAccessorMock = new Mock(); - Composition.RegisterUnique(_publishedSnapshotAccessorMock.Object); + Composition.Services.AddUnique(_publishedSnapshotAccessorMock.Object); - Composition.RegisterUnique(f => new PublishedModelFactory(f.GetRequiredService().GetTypes(), f.GetRequiredService())); - Composition.RegisterUnique(); - Composition.RegisterUnique(); + Composition.Services.AddUnique(f => new PublishedModelFactory(f.GetRequiredService().GetTypes(), f.GetRequiredService())); + Composition.Services.AddUnique(); + Composition.Services.AddUnique(); var loggerFactory = NullLoggerFactory.Instance; var mediaService = Mock.Of(); @@ -66,7 +67,7 @@ namespace Umbraco.Tests.PublishedContent new DataType(new IntegerPropertyEditor(loggerFactory, Mock.Of(), localizationService, ShortStringHelper, LocalizedTextService)) { Id = 1003 }, new DataType(new TextboxPropertyEditor(loggerFactory, Mock.Of(), localizationService, IOHelper, ShortStringHelper, LocalizedTextService)) { Id = 1004 }, new DataType(new MediaPickerPropertyEditor(loggerFactory, Mock.Of(), localizationService, IOHelper, ShortStringHelper, LocalizedTextService)) { Id = 1005 }); - Composition.RegisterUnique(f => dataTypeService); + Composition.Services.AddUnique(f => dataTypeService); } protected override void Initialize() diff --git a/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs index a8eaff34bf..c53cbea9e9 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs @@ -12,6 +12,7 @@ using System.Linq; using System.Threading; using System.Xml; using Examine; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core.Cache; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.Strings; @@ -46,7 +47,7 @@ namespace Umbraco.Tests.PublishedContent .Clear() .Append(); - Composition.RegisterUnique(); + Composition.Services.AddUnique(); } private IMediaType MakeNewMediaType(IUser user, string text, int parentId = -1) diff --git a/src/Umbraco.Tests/Routing/BaseUrlProviderTest.cs b/src/Umbraco.Tests/Routing/BaseUrlProviderTest.cs index 8b05dd2c06..84e22c7760 100644 --- a/src/Umbraco.Tests/Routing/BaseUrlProviderTest.cs +++ b/src/Umbraco.Tests/Routing/BaseUrlProviderTest.cs @@ -28,8 +28,8 @@ namespace Umbraco.Tests.Routing var contentSettings = new ContentSettings(); var userPasswordConfigurationSettings = new UserPasswordConfigurationSettings(); - Composition.Register(x => Microsoft.Extensions.Options.Options.Create(contentSettings)); - Composition.Register(x => Microsoft.Extensions.Options.Options.Create(userPasswordConfigurationSettings)); + Composition.Services.AddTransient(x => Microsoft.Extensions.Options.Options.Create(contentSettings)); + Composition.Services.AddTransient(x => Microsoft.Extensions.Options.Options.Create(userPasswordConfigurationSettings)); } protected IPublishedUrlProvider GetPublishedUrlProvider(IUmbracoContext umbracoContext, DefaultUrlProvider urlProvider) diff --git a/src/Umbraco.Tests/Routing/ContentFinderByIdTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByIdTests.cs index c02626bab4..deb5ac30bf 100644 --- a/src/Umbraco.Tests/Routing/ContentFinderByIdTests.cs +++ b/src/Umbraco.Tests/Routing/ContentFinderByIdTests.cs @@ -1,4 +1,5 @@ -using NUnit.Framework; +using Microsoft.Extensions.DependencyInjection; +using NUnit.Framework; using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Configuration.Models; diff --git a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs index e926557856..19fccab900 100644 --- a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs +++ b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Web.Mvc; using System.Web.Routing; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; @@ -69,13 +70,13 @@ namespace Umbraco.Tests.Routing Current.DefaultRenderMvcControllerType = typeof(RenderMvcController); // FIXME: Wrong! var surfaceControllerTypes = new SurfaceControllerTypeCollection(Composition.TypeLoader.GetSurfaceControllers()); - Composition.RegisterUnique(surfaceControllerTypes); + Composition.Services.AddUnique(surfaceControllerTypes); var umbracoApiControllerTypes = new UmbracoApiControllerTypeCollection(Composition.TypeLoader.GetUmbracoApiControllers()); - Composition.RegisterUnique(umbracoApiControllerTypes); + Composition.Services.AddUnique(umbracoApiControllerTypes); var requestHandlerSettings = new RequestHandlerSettings(); - Composition.RegisterUnique(_ => new DefaultShortStringHelper(Microsoft.Extensions.Options.Options.Create(requestHandlerSettings))); + Composition.Services.AddUnique(_ => new DefaultShortStringHelper(Microsoft.Extensions.Options.Options.Create(requestHandlerSettings))); } public override void TearDown() diff --git a/src/Umbraco.Tests/Routing/UrlProviderWithHideTopLevelNodeFromPathTests.cs b/src/Umbraco.Tests/Routing/UrlProviderWithHideTopLevelNodeFromPathTests.cs index 3ef99f203f..eba88383e7 100644 --- a/src/Umbraco.Tests/Routing/UrlProviderWithHideTopLevelNodeFromPathTests.cs +++ b/src/Umbraco.Tests/Routing/UrlProviderWithHideTopLevelNodeFromPathTests.cs @@ -1,5 +1,6 @@ using NUnit.Framework; using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.Configuration.Models; using Umbraco.Tests.Common; using Umbraco.Tests.Testing; @@ -27,7 +28,7 @@ namespace Umbraco.Tests.Routing protected override void ComposeSettings() { base.ComposeSettings(); - Composition.RegisterUnique(x => Microsoft.Extensions.Options.Options.Create(_globalSettings)); + Composition.Services.AddUnique(x => Microsoft.Extensions.Options.Options.Create(_globalSettings)); } [TestCase(1046, "/")] diff --git a/src/Umbraco.Tests/Routing/UrlProviderWithoutHideTopLevelNodeFromPathTests.cs b/src/Umbraco.Tests/Routing/UrlProviderWithoutHideTopLevelNodeFromPathTests.cs index 79a946f5e3..9e0d311188 100644 --- a/src/Umbraco.Tests/Routing/UrlProviderWithoutHideTopLevelNodeFromPathTests.cs +++ b/src/Umbraco.Tests/Routing/UrlProviderWithoutHideTopLevelNodeFromPathTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; @@ -33,7 +34,7 @@ namespace Umbraco.Tests.Routing protected override void ComposeSettings() { base.ComposeSettings(); - Composition.Register(x => Microsoft.Extensions.Options.Options.Create(_globalSettings)); + Composition.Services.AddTransient(x => Microsoft.Extensions.Options.Options.Create(_globalSettings)); } /// diff --git a/src/Umbraco.Tests/Routing/UrlRoutingTestBase.cs b/src/Umbraco.Tests/Routing/UrlRoutingTestBase.cs index 7566c5372d..346af19a4c 100644 --- a/src/Umbraco.Tests/Routing/UrlRoutingTestBase.cs +++ b/src/Umbraco.Tests/Routing/UrlRoutingTestBase.cs @@ -34,7 +34,7 @@ namespace Umbraco.Tests.Routing { base.Compose(); - Composition.RegisterUnique(_ => GetServiceContext()); + Composition.Services.AddUnique(_ => GetServiceContext()); } protected ServiceContext GetServiceContext() diff --git a/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs b/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs index 4165b381ca..5fef721dfa 100644 --- a/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs +++ b/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs @@ -25,7 +25,7 @@ namespace Umbraco.Tests.Routing { base.Compose(); - Composition.RegisterUnique(_ => Mock.Of()); + Composition.Services.AddUnique(_ => Mock.Of()); Composition.Services.AddTransient(); } diff --git a/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs b/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs index 4063568d47..f367db2123 100644 --- a/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs +++ b/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs @@ -27,7 +27,7 @@ namespace Umbraco.Tests.Routing protected override void Compose() { base.Compose(); - Composition.RegisterUnique(_ => Mock.Of()); + Composition.Services.AddUnique(_ => Mock.Of()); Composition.Services.AddTransient(); } diff --git a/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs b/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs index c624a720e9..60e395344d 100644 --- a/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs +++ b/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs @@ -18,7 +18,6 @@ using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Runtime; -using Umbraco.Infrastructure.Composing; using Umbraco.Net; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Stubs; @@ -37,7 +36,6 @@ namespace Umbraco.Tests.Runtimes public void SetUp() { TestComponent.Reset(); - Current.Reset(); } public void TearDown() @@ -91,10 +89,9 @@ namespace Umbraco.Tests.Runtimes public override void Configure(IServiceCollection services) { - var container = ServiceCollectionRegistryAdapter.Wrap(services); - container.Register(Lifetime.Singleton); - container.Register(Lifetime.Singleton); - container.Register(typeof(ILogger<>), typeof(Logger<>), Lifetime.Singleton); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(typeof(ILogger<>), typeof(Logger<>)); base.Configure(services); @@ -128,7 +125,7 @@ namespace Umbraco.Tests.Runtimes public void Compose(Composition composition) { - composition.RegisterUnique(); + composition.Services.AddUnique(); composition.Components().Append(); Composed = true; diff --git a/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs b/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs index e661aa0bfc..59f9a43526 100644 --- a/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs +++ b/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs @@ -15,11 +15,11 @@ using Umbraco.Core.Models; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Scoping; using Umbraco.Core.Services; -using Umbraco.Infrastructure.Composing; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Entities; using Umbraco.Web; using Current = Umbraco.Web.Composing.Current; +using Microsoft.Extensions.DependencyInjection; namespace Umbraco.Tests.Scoping { @@ -36,26 +36,19 @@ namespace Umbraco.Tests.Scoping DoThing2 = null; DoThing3 = null; - var wrapper = (ServiceCollectionRegistryAdapter) TestHelper.GetRegister(); + var services = TestHelper.GetRegister(); - var composition = new Composition(wrapper.Services, TestHelper.GetMockedTypeLoader(), Mock.Of(), Mock.Of(), TestHelper.IOHelper, AppCaches.NoCache); + var composition = new Composition(services, TestHelper.GetMockedTypeLoader(), Mock.Of(), Mock.Of(), TestHelper.IOHelper, AppCaches.NoCache); - _testObjects = new TestObjects(wrapper); + _testObjects = new TestObjects(services); var globalSettings = new GlobalSettings(); - composition.RegisterUnique(factory => new FileSystems(factory, factory.GetService>(), factory.GetService(), TestHelper.IOHelper, Microsoft.Extensions.Options.Options.Create(globalSettings), TestHelper.GetHostingEnvironment())); + composition.Services.AddUnique(factory => new FileSystems(factory, factory.GetService>(), factory.GetService(), TestHelper.IOHelper, Microsoft.Extensions.Options.Options.Create(globalSettings), TestHelper.GetHostingEnvironment())); composition.WithCollectionBuilder(); - Current.Reset(); - Current.Factory = composition.CreateFactory(); + Current.Factory = composition.CreateServiceProvider(); } - - [TearDown] - public void TearDown() - { - Current.Reset(); - } - + [TestCase(false, true, true)] [TestCase(false, true, false)] [TestCase(false, false, true)] diff --git a/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs b/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs index 1aa3594a96..9cb58c6536 100644 --- a/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs +++ b/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs @@ -1,5 +1,6 @@ using System; using System.Web.Routing; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Moq; @@ -42,8 +43,8 @@ namespace Umbraco.Tests.Scoping // but then, it requires a lot of plumbing ;( // FIXME: and we cannot inject a DistributedCache yet // so doing all this mess - Composition.RegisterUnique(); - Composition.RegisterUnique(f => Mock.Of()); + Composition.Services.AddUnique(); + Composition.Services.AddUnique(f => Mock.Of()); Composition.WithCollectionBuilder() .Add(() => Composition.TypeLoader.GetCacheRefreshers()); } diff --git a/src/Umbraco.Tests/Scoping/ScopedXmlTests.cs b/src/Umbraco.Tests/Scoping/ScopedXmlTests.cs index 9f2a05fdca..3a07a9864a 100644 --- a/src/Umbraco.Tests/Scoping/ScopedXmlTests.cs +++ b/src/Umbraco.Tests/Scoping/ScopedXmlTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Xml; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; @@ -37,8 +38,8 @@ namespace Umbraco.Tests.Scoping // but then, it requires a lot of plumbing ;( // FIXME: and we cannot inject a DistributedCache yet // so doing all this mess - Composition.RegisterUnique(); - Composition.RegisterUnique(f => Mock.Of()); + Composition.Services.AddUnique(); + Composition.Services.AddUnique(f => Mock.Of()); Composition.WithCollectionBuilder() .Add(() => Composition.TypeLoader.GetCacheRefreshers()); } @@ -49,9 +50,9 @@ namespace Umbraco.Tests.Scoping var globalSettings = new GlobalSettings(); var userPasswordConfigurationSettings = new UserPasswordConfigurationSettings(); - Composition.Register(x => Microsoft.Extensions.Options.Options.Create(contentSettings)); - Composition.Register(x => Microsoft.Extensions.Options.Options.Create(globalSettings)); - Composition.Register(x => Microsoft.Extensions.Options.Options.Create(userPasswordConfigurationSettings)); + Composition.Services.AddTransient(x => Microsoft.Extensions.Options.Options.Create(contentSettings)); + Composition.Services.AddTransient(x => Microsoft.Extensions.Options.Options.Create(globalSettings)); + Composition.Services.AddTransient(x => Microsoft.Extensions.Options.Options.Create(userPasswordConfigurationSettings)); } [TearDown] diff --git a/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs b/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs index 02484f2f0a..ddfc6fa7f1 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using Microsoft.Extensions.DependencyInjection; using Moq; using NPoco; using NUnit.Framework; @@ -11,7 +12,6 @@ using Umbraco.Core.Composing; using Umbraco.Core.Logging; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence; -using Umbraco.Infrastructure.Composing; using Umbraco.Persistance.SqlCe; using Umbraco.Web; using Current = Umbraco.Web.Composing.Current; @@ -35,9 +35,7 @@ namespace Umbraco.Tests.TestHelpers [SetUp] public virtual void Initialize() { - Current.Reset(); - - var wrapper = (ServiceCollectionRegistryAdapter) TestHelper.GetRegister(); + var services = TestHelper.GetRegister(); var ioHelper = TestHelper.IOHelper; var logger = new ProfilingLogger(Mock.Of(), Mock.Of()); @@ -48,20 +46,19 @@ namespace Umbraco.Tests.TestHelpers logger, false); - var composition = new Composition(wrapper.Services, typeLoader, Mock.Of(), Mock.Of(), TestHelper.IOHelper, AppCaches.NoCache); + var composition = new Composition(services, typeLoader, Mock.Of(), Mock.Of(), TestHelper.IOHelper, AppCaches.NoCache); - composition.RegisterUnique(_ => Mock.Of()); - composition.RegisterUnique(_ => NullLoggerFactory.Instance); - composition.RegisterUnique(_ => Mock.Of()); - - composition.RegisterUnique(typeLoader); + services.AddUnique(_ => Mock.Of()); + services.AddUnique(_ => NullLoggerFactory.Instance); + services.AddUnique(_ => Mock.Of()); + services.AddUnique(typeLoader); composition.WithCollectionBuilder() .AddCoreMappers(); - composition.RegisterUnique(_ => SqlContext); + services.AddUnique(_ => SqlContext); - var factory = Current.Factory = composition.CreateFactory(); + var factory = Current.Factory = composition.CreateServiceProvider(); var pocoMappers = new NPoco.MapperCollection { new PocoMapper() }; var pocoDataFactory = new FluentPocoDataFactory((type, iPocoDataFactory) => new PocoDataBuilder(type, pocoMappers).Init()); @@ -74,12 +71,5 @@ namespace Umbraco.Tests.TestHelpers public virtual void SetUp() {} - - [TearDown] - public virtual void TearDown() - { - //MappingResolver.Reset(); - Current.Reset(); - } } } diff --git a/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs b/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs index 4a59229980..e9455a22d5 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using System.Threading; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Moq; @@ -35,8 +36,8 @@ namespace Umbraco.Tests.TestHelpers { base.Compose(); - Composition.RegisterUnique(); - Composition.RegisterUnique(); + Composition.Services.AddUnique(); + Composition.Services.AddUnique(); } protected override void Initialize() @@ -93,13 +94,13 @@ namespace Umbraco.Tests.TestHelpers "; } - internal PublishedRouter CreatePublishedRouter(IFactory container = null, ContentFinderCollection contentFinders = null) + internal PublishedRouter CreatePublishedRouter(IServiceProvider container = null, ContentFinderCollection contentFinders = null) { var webRoutingSettings = new WebRoutingSettings(); return CreatePublishedRouter(webRoutingSettings, container ?? Factory, contentFinders); } - internal static PublishedRouter CreatePublishedRouter(WebRoutingSettings webRoutingSettings, IFactory container = null, ContentFinderCollection contentFinders = null) + internal static PublishedRouter CreatePublishedRouter(WebRoutingSettings webRoutingSettings, IServiceProvider container = null, ContentFinderCollection contentFinders = null) { return new PublishedRouter( Microsoft.Extensions.Options.Options.Create(webRoutingSettings), diff --git a/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs b/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs index af4114672b..a718a09d5b 100644 --- a/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs +++ b/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs @@ -5,6 +5,7 @@ using System.Reflection; using System.Web.Mvc; using System.Web.Routing; using System.Web.SessionState; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Moq; using Umbraco.Core; diff --git a/src/Umbraco.Tests/TestHelpers/TestHelper.cs b/src/Umbraco.Tests/TestHelpers/TestHelper.cs index b016b4ebe6..e91c2fdf4d 100644 --- a/src/Umbraco.Tests/TestHelpers/TestHelper.cs +++ b/src/Umbraco.Tests/TestHelpers/TestHelper.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Reflection; using System.Threading; using System.Web; +using Microsoft.Extensions.DependencyInjection; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -306,7 +307,7 @@ namespace Umbraco.Tests.TestHelpers public static IUmbracoVersion GetUmbracoVersion() => _testHelperInternal.GetUmbracoVersion(); - public static IRegister GetRegister() => _testHelperInternal.GetRegister(); + public static IServiceCollection GetRegister() => _testHelperInternal.GetRegister().AddLazySupport(); public static IHostingEnvironment GetHostingEnvironment() => _testHelperInternal.GetHostingEnvironment(); diff --git a/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs b/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs index 70768e89f0..d6ace1ac2c 100644 --- a/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs +++ b/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs @@ -17,6 +17,7 @@ using Umbraco.Persistance.SqlCe; using Umbraco.Tests.Common; using Umbraco.Web; using Umbraco.Web.PublishedCache; +using Microsoft.Extensions.DependencyInjection; namespace Umbraco.Tests.TestHelpers { @@ -54,7 +55,7 @@ namespace Umbraco.Tests.TestHelpers /// Gets a mocked service context built with mocked services. /// /// A ServiceContext. - public ServiceContext GetServiceContextMock(IFactory container = null) + public ServiceContext GetServiceContextMock(IServiceProvider container = null) { // FIXME: else some tests break - figure it out container = null; @@ -82,7 +83,7 @@ namespace Umbraco.Tests.TestHelpers MockService(container)); } - private T MockService(IFactory container = null) + private T MockService(IServiceProvider container = null) where T : class { return container?.GetService() ?? new Mock().Object; diff --git a/src/Umbraco.Tests/TestHelpers/TestObjects.cs b/src/Umbraco.Tests/TestHelpers/TestObjects.cs index ccca89f096..91b82caccb 100644 --- a/src/Umbraco.Tests/TestHelpers/TestObjects.cs +++ b/src/Umbraco.Tests/TestHelpers/TestObjects.cs @@ -2,6 +2,7 @@ using System.Configuration; using System.IO; using System.Linq; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Microsoft.Extensions.Logging; using Moq; @@ -31,9 +32,9 @@ namespace Umbraco.Tests.TestHelpers /// internal partial class TestObjects { - private readonly IRegister _register; + private readonly IServiceCollection _register; - public TestObjects(IRegister register) + public TestObjects(IServiceCollection register) { _register = register; } @@ -68,13 +69,13 @@ namespace Umbraco.Tests.TestHelpers return new UmbracoDatabase(connection, sqlContext, logger, TestHelper.BulkSqlInsertProvider); } - private Lazy GetLazyService(IFactory container, Func ctor) + private Lazy GetLazyService(IServiceProvider container, Func ctor) where T : class { return new Lazy(() => container?.GetService() ?? ctor(container)); } - private T GetRepo(IFactory container) + private T GetRepo(IServiceProvider container) where T : class, IRepository { return container?.GetService() ?? Mock.Of(); diff --git a/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs b/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs index d6ff5fcfbb..270b391094 100644 --- a/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs +++ b/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs @@ -76,8 +76,8 @@ namespace Umbraco.Tests.TestHelpers base.Compose(); Composition.Services.AddTransient(); - Composition.Register(factory => PublishedSnapshotService); - Composition.Register(factory => DefaultCultureAccessor); + Composition.Services.AddTransient(factory => PublishedSnapshotService); + Composition.Services.AddTransient(factory => DefaultCultureAccessor); Composition.WithCollectionBuilder() .Clear() @@ -86,7 +86,7 @@ namespace Umbraco.Tests.TestHelpers Composition.WithCollectionBuilder() .Add(Composition.TypeLoader.GetUmbracoApiControllers()); - Composition.RegisterUnique(f => + Composition.Services.AddUnique(f => { if (Options.Database == UmbracoTestOptions.Database.None) return TestObjects.GetDatabaseFactoryMock(); diff --git a/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs b/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs index 735811d355..9c259d7d16 100644 --- a/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs +++ b/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs @@ -63,10 +63,10 @@ namespace Umbraco.Tests.Testing.TestingTests public void Can_Mock_Umbraco_Helper() { // unless we can inject them in MembershipHelper, we need need this - Composition.Register(_ => Mock.Of()); - Composition.Register(_ => Mock.Of()); - Composition.Register(_ => Mock.Of()); - Composition.Register(_ => AppCaches.Disabled); + Composition.Services.AddTransient(_ => Mock.Of()); + Composition.Services.AddTransient(_ => Mock.Of()); + Composition.Services.AddTransient(_ => Mock.Of()); + Composition.Services.AddTransient(_ => AppCaches.Disabled); Composition.Services.AddTransient(); // ReSharper disable once UnusedVariable diff --git a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs index 5e15a58017..e009afacac 100644 --- a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs +++ b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs @@ -43,7 +43,6 @@ using Umbraco.Core.Serialization; using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; using Umbraco.Core.Strings; -using Umbraco.Infrastructure.Composing; using Umbraco.Net; using Umbraco.Tests.Common; using Umbraco.Tests.TestHelpers; @@ -106,7 +105,7 @@ namespace Umbraco.Tests.Testing protected Composition Composition { get; private set; } - protected IFactory Factory { get; private set; } + protected IServiceProvider Factory { get; private set; } protected UmbracoTestAttribute Options { get; private set; } @@ -203,11 +202,11 @@ namespace Umbraco.Tests.Testing LocalizedTextService = new LocalizedTextService(new Dictionary>(), loggerFactory.CreateLogger()); var typeLoader = GetTypeLoader(IOHelper, TypeFinder, appCaches.RuntimeCache, HostingEnvironment, loggerFactory.CreateLogger(), proflogger, Options.TypeLoader); - var register = TestHelper.GetRegister(); + var services = TestHelper.GetRegister(); Composition = new Composition( - (register as ServiceCollectionRegistryAdapter).Services, + services, typeLoader, proflogger, MockRuntimeState(RuntimeLevel.Run), @@ -216,25 +215,25 @@ namespace Umbraco.Tests.Testing ); //TestHelper.GetConfigs().RegisterWith(register); - Composition.RegisterUnique(typeof(ILoggerFactory), loggerFactory); - Composition.Register(typeof(ILogger<>), typeof(Logger<>)); - Composition.Register(typeof(ILogger), msLogger); - Composition.RegisterUnique(IOHelper); - Composition.RegisterUnique(UriUtility); - Composition.RegisterUnique(UmbracoVersion); - Composition.RegisterUnique(TypeFinder); - Composition.RegisterUnique(LocalizedTextService); - Composition.RegisterUnique(typeLoader); - Composition.RegisterUnique(profiler); - Composition.RegisterUnique(proflogger); - Composition.RegisterUnique(appCaches); - Composition.RegisterUnique(HostingEnvironment); - Composition.RegisterUnique(backOfficeInfo); - Composition.RegisterUnique(ipResolver); - Composition.RegisterUnique(); - Composition.RegisterUnique(TestHelper.ShortStringHelper); - Composition.RegisterUnique(); - Composition.RegisterUnique(); + services.AddUnique(typeof(ILoggerFactory), loggerFactory); + services.AddTransient(typeof(ILogger<>), typeof(Logger<>)); + services.AddSingleton(msLogger); + services.AddUnique(IOHelper); + services.AddUnique(UriUtility); + services.AddUnique(UmbracoVersion); + services.AddUnique(TypeFinder); + services.AddUnique(LocalizedTextService); + services.AddUnique(typeLoader); + services.AddUnique(profiler); + services.AddUnique(proflogger); + services.AddUnique(appCaches); + services.AddUnique(HostingEnvironment); + services.AddUnique(backOfficeInfo); + services.AddUnique(ipResolver); + services.AddUnique(); + services.AddUnique(TestHelper.ShortStringHelper); + services.AddUnique(); + services.AddUnique(); var memberService = Mock.Of(); @@ -242,14 +241,14 @@ namespace Umbraco.Tests.Testing var membershipProvider = new MembersMembershipProvider(memberService, memberTypeService, Mock.Of(), TestHelper.GetHostingEnvironment(), TestHelper.GetIpResolver()); var membershipHelper = new MembershipHelper(Mock.Of(), Mock.Of(), membershipProvider, Mock.Of(), memberService, memberTypeService, Mock.Of(), AppCaches.Disabled, loggerFactory, ShortStringHelper, Mock.Of()); - Composition.RegisterUnique(membershipHelper); + services.AddUnique(membershipHelper); - TestObjects = new TestObjects(register); + TestObjects = new TestObjects(services); Compose(); - Current.Factory = Factory = Composition.CreateFactory(); + Current.Factory = Factory = Composition.CreateServiceProvider(); Initialize(); } @@ -313,17 +312,17 @@ namespace Umbraco.Tests.Testing Umbraco.Web.Composing.Current.UmbracoContextAccessor = new TestUmbracoContextAccessor(); // web - Composition.RegisterUnique(_ => Umbraco.Web.Composing.Current.UmbracoContextAccessor); - Composition.RegisterUnique(); + Composition.Services.AddUnique(_ => Umbraco.Web.Composing.Current.UmbracoContextAccessor); + Composition.Services.AddUnique(); Composition.WithCollectionBuilder(); Composition.DataValueReferenceFactories(); - Composition.RegisterUnique(); - Composition.RegisterUnique(); - Composition.RegisterUnique(); + Composition.Services.AddUnique(); + Composition.Services.AddUnique(); + Composition.Services.AddUnique(); Composition.SetCultureDictionaryFactory(); - Composition.Register(f => f.GetRequiredService().CreateDictionary(), Lifetime.Singleton); + Composition.Services.AddSingleton(f => f.GetRequiredService().CreateDictionary()); // register back office sections in the order we want them rendered Composition.WithCollectionBuilder().Append() .Append() @@ -333,18 +332,18 @@ namespace Umbraco.Tests.Testing .Append() .Append() .Append(); - Composition.RegisterUnique(); + Composition.Services.AddUnique(); - Composition.RegisterUnique(); - Composition.RegisterUnique(); - Composition.RegisterUnique(); - Composition.RegisterUnique(); - Composition.RegisterUnique(); - Composition.RegisterUnique(); - Composition.RegisterUnique(); + Composition.Services.AddUnique(); + Composition.Services.AddUnique(); + Composition.Services.AddUnique(); + Composition.Services.AddUnique(); + Composition.Services.AddUnique(); + Composition.Services.AddUnique(); + Composition.Services.AddUnique(); var webRoutingSettings = new WebRoutingSettings(); - Composition.RegisterUnique(factory => + Composition.Services.AddUnique(factory => new UrlProvider( factory.GetRequiredService(), Microsoft.Extensions.Options.Options.Create(webRoutingSettings), @@ -361,17 +360,17 @@ namespace Umbraco.Tests.Testing // what else? var runtimeStateMock = new Mock(); runtimeStateMock.Setup(x => x.Level).Returns(RuntimeLevel.Run); - Composition.RegisterUnique(f => runtimeStateMock.Object); - Composition.Register(_ => Mock.Of()); + Composition.Services.AddUnique(f => runtimeStateMock.Object); + Composition.Services.AddTransient(_ => Mock.Of()); Composition.Services.AddTransient(); // ah... Composition.WithCollectionBuilder(); Composition.WithCollectionBuilder(); - Composition.RegisterUnique(); - Composition.RegisterUnique(); + Composition.Services.AddUnique(); + Composition.Services.AddUnique(); - Composition.RegisterUnique(); + Composition.Services.AddUnique(); // register empty content apps collection Composition.WithCollectionBuilder(); @@ -443,13 +442,13 @@ namespace Umbraco.Tests.Testing var userPasswordConfigurationSettings = new UserPasswordConfigurationSettings(); var webRoutingSettings = new WebRoutingSettings(); - Composition.Register(x => Microsoft.Extensions.Options.Options.Create(contentSettings)); - Composition.Register(x => Microsoft.Extensions.Options.Options.Create(coreDebugSettings)); - Composition.Register(x => Microsoft.Extensions.Options.Options.Create(globalSettings)); - Composition.Register(x => Microsoft.Extensions.Options.Options.Create(nuCacheSettings)); - Composition.Register(x => Microsoft.Extensions.Options.Options.Create(requestHandlerSettings)); - Composition.Register(x => Microsoft.Extensions.Options.Options.Create(userPasswordConfigurationSettings)); - Composition.Register(x => Microsoft.Extensions.Options.Options.Create(webRoutingSettings)); + Composition.Services.AddTransient(x => Microsoft.Extensions.Options.Options.Create(contentSettings)); + Composition.Services.AddTransient(x => Microsoft.Extensions.Options.Options.Create(coreDebugSettings)); + Composition.Services.AddTransient(x => Microsoft.Extensions.Options.Options.Create(globalSettings)); + Composition.Services.AddTransient(x => Microsoft.Extensions.Options.Options.Create(nuCacheSettings)); + Composition.Services.AddTransient(x => Microsoft.Extensions.Options.Options.Create(requestHandlerSettings)); + Composition.Services.AddTransient(x => Microsoft.Extensions.Options.Options.Create(userPasswordConfigurationSettings)); + Composition.Services.AddTransient(x => Microsoft.Extensions.Options.Options.Create(webRoutingSettings)); } protected virtual void ComposeApplication(bool withApplication) @@ -461,66 +460,66 @@ namespace Umbraco.Tests.Testing // default Datalayer/Repositories/SQL/Database/etc... Composition.ComposeRepositories(); - Composition.RegisterUnique(); + Composition.Services.AddUnique(); - Composition.RegisterUnique(); - Composition.RegisterUnique(); - Composition.RegisterUnique(); + Composition.Services.AddUnique(); + Composition.Services.AddUnique(); + Composition.Services.AddUnique(); // register filesystems - Composition.RegisterUnique(factory => TestObjects.GetFileSystemsMock()); + Composition.Services.AddUnique(factory => TestObjects.GetFileSystemsMock()); var scheme = Mock.Of(); var mediaFileSystem = new MediaFileSystem(Mock.Of(), scheme, _loggerFactory.CreateLogger(), TestHelper.ShortStringHelper); - Composition.RegisterUnique(factory => mediaFileSystem); + Composition.Services.AddUnique(factory => mediaFileSystem); // no factory (noop) - Composition.RegisterUnique(); + Composition.Services.AddUnique(); // register application stuff (database factory & context, services...) Composition.WithCollectionBuilder() .AddCoreMappers(); - Composition.RegisterUnique(_ => new TransientEventMessagesFactory()); + Composition.Services.AddUnique(_ => new TransientEventMessagesFactory()); var globalSettings = new GlobalSettings(); var connectionStrings = new ConnectionStrings(); - Composition.RegisterUnique(f => new UmbracoDatabaseFactory(_loggerFactory.CreateLogger(), + Composition.Services.AddUnique(f => new UmbracoDatabaseFactory(_loggerFactory.CreateLogger(), LoggerFactory, globalSettings, connectionStrings, new Lazy(f.GetRequiredService), TestHelper.DbProviderFactoryCreator)); - Composition.RegisterUnique(f => f.GetService().SqlContext); + Composition.Services.AddUnique(f => f.GetService().SqlContext); Composition.WithCollectionBuilder(); // empty - Composition.RegisterUnique(factory + Composition.Services.AddUnique(factory => TestObjects.GetScopeProvider(_loggerFactory, factory.GetService(), factory.GetService(), factory.GetService())); - Composition.RegisterUnique(factory => (IScopeAccessor) factory.GetRequiredService()); + Composition.Services.AddUnique(factory => (IScopeAccessor) factory.GetRequiredService()); Composition.ComposeServices(); // composition root is doing weird things, fix - Composition.RegisterUnique(); - Composition.RegisterUnique(); + Composition.Services.AddUnique(); + Composition.Services.AddUnique(); // somehow property editor ends up wanting this Composition.WithCollectionBuilder(); - Composition.RegisterUnique(); + Composition.Services.AddUnique(); // note - don't register collections, use builders Composition.WithCollectionBuilder(); - Composition.RegisterUnique(); - Composition.RegisterUnique(); + Composition.Services.AddUnique(); + Composition.Services.AddUnique(); - Composition.RegisterUnique(TestHelper.GetHttpContextAccessor(GetHttpContextFactory("/").HttpContext)); + Composition.Services.AddUnique(TestHelper.GetHttpContextAccessor(GetHttpContextFactory("/").HttpContext)); } #endregion @@ -564,20 +563,26 @@ namespace Umbraco.Tests.Testing protected virtual void Reset() { - // reset and dispose scopes - // ensures we don't leak an opened database connection - // which would lock eg SqlCe .sdf files - if (Factory?.GetService() is ScopeProvider scopeProvider) + try { - Scope scope; - while ((scope = scopeProvider.AmbientScope) != null) + // reset and dispose scopes + // ensures we don't leak an opened database connection + // which would lock eg SqlCe .sdf files + if (Factory?.GetService() is ScopeProvider scopeProvider) { - scope.Reset(); - scope.Dispose(); + Scope scope; + while ((scope = scopeProvider.AmbientScope) != null) + { + scope.Reset(); + scope.Dispose(); + } } } - - Current.Reset(); // disposes the factory + catch (ObjectDisposedException ex) + { + if (!ex.ObjectName.Equals(nameof(IServiceProvider))) + throw; + } // reset all other static things that should not be static ;( UriUtility.ResetAppDomainAppVirtualPath(HostingEnvironment); diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 8ef268d214..13e9cbeef1 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -88,8 +88,6 @@ 1.11.24 - - @@ -99,6 +97,9 @@ + + 3.1.8 + @@ -210,7 +211,6 @@ - diff --git a/src/Umbraco.Tests/UmbracoExamine/EventsTest.cs b/src/Umbraco.Tests/UmbracoExamine/EventsTest.cs index 6eb4a17dcf..f40cae536f 100644 --- a/src/Umbraco.Tests/UmbracoExamine/EventsTest.cs +++ b/src/Umbraco.Tests/UmbracoExamine/EventsTest.cs @@ -1,12 +1,7 @@ -using System; -using System.Linq; -using Examine; -using LightInject; -using Lucene.Net.Store; +using System.Linq; using NUnit.Framework; using Umbraco.Tests.Testing; using Umbraco.Examine; -using Umbraco.Core.PropertyEditors; namespace Umbraco.Tests.UmbracoExamine { diff --git a/src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs b/src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs index 9bd448dc38..ab8884cbaf 100644 --- a/src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs +++ b/src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs @@ -1,6 +1,7 @@ using System.IO; using Microsoft.Extensions.Logging.Abstractions; using NUnit.Framework; +using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Logging; @@ -34,7 +35,7 @@ namespace Umbraco.Tests.UmbracoExamine { base.Compose(); var requestHandlerSettings = new RequestHandlerSettings(); - Composition.RegisterUnique(_ => new DefaultShortStringHelper(Microsoft.Extensions.Options.Options.Create(requestHandlerSettings))); + Composition.Services.AddUnique(_ => new DefaultShortStringHelper(Microsoft.Extensions.Options.Options.Create(requestHandlerSettings))); } } } diff --git a/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs b/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs index 7b04e38e45..d62a900452 100644 --- a/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs +++ b/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs @@ -14,6 +14,7 @@ using Umbraco.Core.Models; using Newtonsoft.Json; using System.Collections.Generic; using System; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core; using Umbraco.Tests.TestHelpers; diff --git a/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs b/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs index 6186e5f782..67e54e440e 100644 --- a/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs +++ b/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using Examine; using Examine.Search; +using Microsoft.Extensions.DependencyInjection; using NUnit.Framework; using Moq; using Umbraco.Core; diff --git a/src/Umbraco.Tests/Web/Controllers/AuthenticationControllerTests.cs b/src/Umbraco.Tests/Web/Controllers/AuthenticationControllerTests.cs index aa329d2b48..0cb990df3d 100644 --- a/src/Umbraco.Tests/Web/Controllers/AuthenticationControllerTests.cs +++ b/src/Umbraco.Tests/Web/Controllers/AuthenticationControllerTests.cs @@ -51,12 +51,12 @@ namespace Umbraco.Tests.Web.Controllers // replace the true IUserService implementation with a mock // so that each test can configure the service to their liking - Composition.RegisterUnique(f => Mock.Of()); + Composition.Services.AddUnique(f => Mock.Of()); // kill the true IEntityService too - Composition.RegisterUnique(f => Mock.Of()); + Composition.Services.AddUnique(f => Mock.Of()); - Composition.RegisterUnique(); + Composition.Services.AddUnique(); } diff --git a/src/Umbraco.Tests/Web/UmbracoHelperTests.cs b/src/Umbraco.Tests/Web/UmbracoHelperTests.cs deleted file mode 100644 index 66c9395c59..0000000000 --- a/src/Umbraco.Tests/Web/UmbracoHelperTests.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.IO; -using System.Text; -using Microsoft.Extensions.Logging; -using Moq; -using NUnit.Framework; -using Umbraco.Core; -using Umbraco.Core.Cache; -using Umbraco.Core.Composing; -using Umbraco.Core.Logging; -using Umbraco.Tests.TestHelpers; -using Umbraco.Web; -using Current = Umbraco.Web.Composing.Current; - - -namespace Umbraco.Tests.Web -{ - - [TestFixture] - public class UmbracoHelperTests - { - - [TearDown] - public void TearDown() - { - Current.Reset(); - } - - private void SetUpDependencyContainer() - { - // FIXME: bad in a unit test - but Udi has a static ctor that wants it?! - var container = new Mock(); - var typeFinder = TestHelper.GetTypeFinder(); - var ioHelper = TestHelper.IOHelper; - container - .Setup(x => x.GetRequiredService(typeof(TypeLoader))) - .Returns(new TypeLoader( - typeFinder, - NoAppCache.Instance, - new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), - Mock.Of>(), - new ProfilingLogger(Mock.Of(), Mock.Of()) - ) - ); - - Current.Factory = container.Object; - } - } -} diff --git a/src/Umbraco.Web.BackOffice/Runtime/BackOfficeComposer.cs b/src/Umbraco.Web.BackOffice/Runtime/BackOfficeComposer.cs index d15d419089..78b7317362 100644 --- a/src/Umbraco.Web.BackOffice/Runtime/BackOfficeComposer.cs +++ b/src/Umbraco.Web.BackOffice/Runtime/BackOfficeComposer.cs @@ -24,14 +24,14 @@ namespace Umbraco.Web.BackOffice.Runtime { public void Compose(Composition composition) { - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); composition.Services.AddScoped(); composition.Services.AddScoped(); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); // register back office trees // the collection builder only accepts types inheriting from TreeControllerBase @@ -42,15 +42,15 @@ namespace Umbraco.Web.BackOffice.Runtime composition.ComposeWebMappingProfiles(); - composition.RegisterUnique(factory => + composition.Services.AddUnique(factory => new PhysicalFileSystem( factory.GetRequiredService(), factory.GetRequiredService(), factory.GetRequiredService>(), "~/")); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); composition.ComposeUmbracoBackOfficeControllers(); } diff --git a/src/Umbraco.Web.BackOffice/Trees/TreeCollectionBuilder.cs b/src/Umbraco.Web.BackOffice/Trees/TreeCollectionBuilder.cs index 98438d952b..a82731f777 100644 --- a/src/Umbraco.Web.BackOffice/Trees/TreeCollectionBuilder.cs +++ b/src/Umbraco.Web.BackOffice/Trees/TreeCollectionBuilder.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Web.Trees; @@ -13,9 +14,10 @@ namespace Umbraco.Web.BackOffice.Trees { private readonly List _trees = new List(); - public TreeCollection CreateCollection(IFactory factory) => new TreeCollection(_trees); + public TreeCollection CreateCollection(IServiceProvider factory) => new TreeCollection(_trees); + + public void RegisterWith(IServiceCollection services) => services.Add(new ServiceDescriptor(typeof(TreeCollection), CreateCollection, ServiceLifetime.Singleton)); - public void RegisterWith(IRegister register) => register.Register(CreateCollection, Lifetime.Singleton); /// /// Registers a custom tree definition diff --git a/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs b/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs index 3a251fff9e..1d13c4c712 100644 --- a/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs @@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Server.Kestrel.Core; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using System; +using Umbraco.Core; using Umbraco.Extensions; using Umbraco.Web.Common.Filters; using Umbraco.Web.Common.ModelBinders; @@ -20,6 +21,8 @@ namespace Umbraco.Web.Common.Builder if (webHostEnvironment is null) throw new ArgumentNullException(nameof(webHostEnvironment)); if (config is null) throw new ArgumentNullException(nameof(config)); + services.AddLazySupport(); + var builder = new UmbracoBuilder(services, webHostEnvironment, config); return builder; } diff --git a/src/Umbraco.Web.Common/Extensions/CompositionExtensions.cs b/src/Umbraco.Web.Common/Extensions/CompositionExtensions.cs index 2ce003d226..ae648f9c8a 100644 --- a/src/Umbraco.Web.Common/Extensions/CompositionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/CompositionExtensions.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core.Composing; using Umbraco.Web.Common.Controllers; using Umbraco.Web.Mvc; @@ -14,7 +15,7 @@ namespace Umbraco.Extensions public static void RegisterControllers(this Composition composition, IEnumerable controllerTypes) { foreach (var controllerType in controllerTypes) - composition.Register(controllerType, Lifetime.Request); + composition.Services.AddScoped(controllerType); } } } diff --git a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs index e870bb177a..1a157a74be 100644 --- a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs @@ -26,7 +26,6 @@ using Umbraco.Core.Logging.Serilog; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Runtime; -using Umbraco.Infrastructure.Composing; using Umbraco.Web.Common.AspNetCore; using Umbraco.Web.Common.Profiler; using ConnectionStrings = Umbraco.Core.Configuration.Models.ConnectionStrings; @@ -112,12 +111,11 @@ namespace Umbraco.Extensions /// public static IServiceCollection AddUmbracoCore(this IServiceCollection services, IWebHostEnvironment webHostEnvironment, - IRegister umbContainer, Assembly entryAssembly, AppCaches appCaches, ILoggingConfiguration loggingConfiguration, IConfiguration configuration) - => services.AddUmbracoCore(webHostEnvironment, umbContainer, entryAssembly, appCaches, loggingConfiguration, configuration, GetCoreRuntime); + => services.AddUmbracoCore(webHostEnvironment, entryAssembly, appCaches, loggingConfiguration, configuration, GetCoreRuntime); /// /// Adds the Umbraco Configuration requirements @@ -169,7 +167,6 @@ namespace Umbraco.Extensions /// public static IServiceCollection AddUmbracoCore(this IServiceCollection services, IWebHostEnvironment webHostEnvironment, IConfiguration configuration) { - var loggingConfig = new LoggingConfiguration( Path.Combine(webHostEnvironment.ContentRootPath, "umbraco", "logs")); @@ -183,15 +180,7 @@ namespace Umbraco.Extensions requestCache, new IsolatedCaches(type => new DeepCloneAppCache(new ObjectCacheAppCache()))); - /* TODO: MSDI - Post initial merge we can clean up a lot. - * Change the method signatures lower down - * Or even just remove IRegister / IFactory interfaces entirely. - * If we try to do it immediately, merging becomes a nightmare. - */ - var register = new ServiceCollectionRegistryAdapter(services); - services.AddUmbracoCore(webHostEnvironment, - register, Assembly.GetEntryAssembly(), appCaches, loggingConfig, @@ -217,7 +206,6 @@ namespace Umbraco.Extensions public static IServiceCollection AddUmbracoCore( this IServiceCollection services, IWebHostEnvironment webHostEnvironment, - IRegister umbContainer, Assembly entryAssembly, AppCaches appCaches, ILoggingConfiguration loggingConfiguration, @@ -226,10 +214,10 @@ namespace Umbraco.Extensions Func getRuntime) { if (services is null) throw new ArgumentNullException(nameof(services)); - var container = umbContainer; - if (container is null) throw new ArgumentNullException(nameof(container)); if (entryAssembly is null) throw new ArgumentNullException(nameof(entryAssembly)); + services.AddLazySupport(); + // Add service session // This can be overwritten by the user by adding their own call to AddSession // since the last call of AddSession take precedence diff --git a/src/Umbraco.Web.Common/Profiler/WebProfilerComposer.cs b/src/Umbraco.Web.Common/Profiler/WebProfilerComposer.cs index edb3db6f85..fd8f275291 100644 --- a/src/Umbraco.Web.Common/Profiler/WebProfilerComposer.cs +++ b/src/Umbraco.Web.Common/Profiler/WebProfilerComposer.cs @@ -9,7 +9,7 @@ namespace Umbraco.Web.Common.Profiler { base.Compose(composition); - composition.RegisterUnique(); + composition.Services.AddUnique(); } } } diff --git a/src/Umbraco.Web.Common/Runtime/AspNetCoreBootFailedComposer.cs b/src/Umbraco.Web.Common/Runtime/AspNetCoreBootFailedComposer.cs index 010e6533d9..fa2e090578 100644 --- a/src/Umbraco.Web.Common/Runtime/AspNetCoreBootFailedComposer.cs +++ b/src/Umbraco.Web.Common/Runtime/AspNetCoreBootFailedComposer.cs @@ -12,7 +12,7 @@ namespace Umbraco.Web.Common.Runtime { public void Compose(Composition composition) { - composition.RegisterUnique(); + composition.Services.AddUnique(); } } } diff --git a/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs b/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs index cb247cff60..39742dcb0d 100644 --- a/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs +++ b/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs @@ -45,39 +45,42 @@ namespace Umbraco.Web.Common.Runtime base.Compose(composition); // AspNetCore specific services - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); // Our own netcore implementations - composition.RegisterMultipleUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); // The umbraco request lifetime - composition.RegisterMultipleUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); //Password hasher - composition.RegisterUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); composition.Services.AddTransient(); - composition.RegisterUnique(); + composition.Services.AddUnique(); - composition.RegisterMultipleUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); // register the umbraco context factory - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); //register the install components //NOTE: i tried to not have these registered if we weren't installing or upgrading but post install when the site restarts @@ -89,17 +92,17 @@ namespace Umbraco.Web.Common.Runtime .Add(umbracoApiControllerTypes); - composition.RegisterUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(); - composition.RegisterUnique(factory => new LegacyPasswordSecurity()); + composition.Services.AddUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(factory => new LegacyPasswordSecurity()); } } } diff --git a/src/Umbraco.Web.Common/RuntimeMinification/SmidgeComposer.cs b/src/Umbraco.Web.Common/RuntimeMinification/SmidgeComposer.cs index 3ceba06c62..3400ee49d9 100644 --- a/src/Umbraco.Web.Common/RuntimeMinification/SmidgeComposer.cs +++ b/src/Umbraco.Web.Common/RuntimeMinification/SmidgeComposer.cs @@ -11,13 +11,11 @@ namespace Umbraco.Web.Common.RuntimeMinification { public void Compose(Composition composition) { - // TODO: For this to work we need to have services.AddSmidge() based on the Smidge APIs but our composer APIs don't really let us do that // This makes it a bit awkward to boot the runtime since that call would need to be made outside of the composer... .hrm... - - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddUnique(); + composition.Services.AddUnique(); composition.Services.AddTransient(); } } diff --git a/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/Rte.cshtml b/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/Rte.cshtml index 0aef9d10ca..715aad12d6 100644 --- a/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/Rte.cshtml +++ b/src/Umbraco.Web.UI/Views/Partials/Grid/Editors/Rte.cshtml @@ -1,6 +1,13 @@ @model dynamic @using Umbraco.Web.Composing @using Umbraco.Web.Templates + +@* + TODO: When this project is asp.net core we can @inject HtmlLocalLinkParser etc (or come up with something even better) +*@ + +@using Microsoft.Extensions.DependencyInjection + @{ var htmlLocalLinkParser = Current.Factory.GetRequiredService(); var htmlUrlParser = Current.Factory.GetRequiredService(); diff --git a/src/Umbraco.Web/Composing/Current.cs b/src/Umbraco.Web/Composing/Current.cs index 0fd7a02444..d49aca86d5 100644 --- a/src/Umbraco.Web/Composing/Current.cs +++ b/src/Umbraco.Web/Composing/Current.cs @@ -1,4 +1,5 @@ using System; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Cache; @@ -38,17 +39,18 @@ using Umbraco.Web.WebApi; namespace Umbraco.Web.Composing { + // TODO: MSDI - let's kill this class once and for all... // see notes in Umbraco.Core.Composing.Current. public static class Current { private static readonly object Locker = new object(); - private static IFactory _factory; + private static IServiceProvider _factory; /// /// Gets or sets the factory. /// - public static IFactory Factory + public static IServiceProvider Factory { get { @@ -58,44 +60,12 @@ namespace Umbraco.Web.Composing } set { - if (_factory != null) - throw new InvalidOperationException("A factory has already been set."); _factory = value; } } private static IUmbracoContextAccessor _umbracoContextAccessor; - static Current() - { - Resetted += (sender, args) => - { - if (_umbracoContextAccessor != null) - { - var umbracoContext = _umbracoContextAccessor.UmbracoContext; - umbracoContext?.Dispose(); - } - _umbracoContextAccessor = null; - }; - } - - /// - /// for UNIT TESTS exclusively! Resets . Indented for testing only, and not supported in production code. - /// - /// - /// For UNIT TESTS exclusively. - /// Resets everything that is 'current'. - /// - public static void Reset() - { - _factory.DisposeIfDisposable(); - _factory = null; - - Resetted?.Invoke(null, EventArgs.Empty); - } - - internal static event EventHandler Resetted; - #region Temp & Special diff --git a/src/Umbraco.Web/Composing/ModuleInjector.cs b/src/Umbraco.Web/Composing/ModuleInjector.cs index e21b585ab7..5cfec1c484 100644 --- a/src/Umbraco.Web/Composing/ModuleInjector.cs +++ b/src/Umbraco.Web/Composing/ModuleInjector.cs @@ -1,4 +1,5 @@ using System.Web; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Exceptions; diff --git a/src/Umbraco.Web/CompositionExtensions.cs b/src/Umbraco.Web/CompositionExtensions.cs index add809c79f..d96e21aa3d 100644 --- a/src/Umbraco.Web/CompositionExtensions.cs +++ b/src/Umbraco.Web/CompositionExtensions.cs @@ -2,7 +2,6 @@ using Microsoft.Extensions.DependencyInjection; using Umbraco.Core; using Umbraco.Core.Composing; -using Umbraco.Infrastructure.Composing; using Umbraco.Web.Actions; using Umbraco.Web.ContentApps; using Umbraco.Web.Dashboards; @@ -30,10 +29,11 @@ namespace Umbraco.Web /// public static class WebCompositionExtensions { - public static IFactory CreateFactory(this Composition composition) + [Obsolete("This extension method exists only to ease migration, please refactor")] + public static IServiceProvider CreateServiceProvider(this Composition composition) { composition.RegisterBuilders(); - return ServiceProviderFactoryAdapter.Wrap(composition.Services.BuildServiceProvider()); + return composition.Services.BuildServiceProvider(); } #region Uniques @@ -44,9 +44,9 @@ namespace Umbraco.Web /// The type of the content last chance finder. /// The composition. public static void SetContentLastChanceFinder(this Composition composition) - where T : IContentLastChanceFinder + where T : class, IContentLastChanceFinder { - composition.RegisterUnique(); + composition.Services.AddUnique(); } /// @@ -54,9 +54,9 @@ namespace Umbraco.Web /// /// The composition. /// A function creating a last chance finder. - public static void SetContentLastChanceFinder(this Composition composition, Func factory) + public static void SetContentLastChanceFinder(this Composition composition, Func factory) { - composition.RegisterUnique(factory); + composition.Services.AddUnique(factory); } /// @@ -66,7 +66,7 @@ namespace Umbraco.Web /// A last chance finder. public static void SetContentLastChanceFinder(this Composition composition, IContentLastChanceFinder finder) { - composition.RegisterUnique(_ => finder); + composition.Services.AddUnique(_ => finder); } /// @@ -75,9 +75,9 @@ namespace Umbraco.Web /// The type of the site domain helper. /// public static void SetSiteDomainHelper(this Composition composition) - where T : ISiteDomainHelper + where T : class, ISiteDomainHelper { - composition.RegisterUnique(); + composition.Services.AddUnique(); } /// @@ -85,9 +85,9 @@ namespace Umbraco.Web /// /// The composition. /// A function creating a helper. - public static void SetSiteDomainHelper(this Composition composition, Func factory) + public static void SetSiteDomainHelper(this Composition composition, Func factory) { - composition.RegisterUnique(factory); + composition.Services.AddUnique(factory); } /// @@ -97,7 +97,7 @@ namespace Umbraco.Web /// A helper. public static void SetSiteDomainHelper(this Composition composition, ISiteDomainHelper helper) { - composition.RegisterUnique(_ => helper); + composition.Services.AddUnique(_ => helper); } #endregion diff --git a/src/Umbraco.Web/Mvc/EnsurePublishedContentRequestAttribute.cs b/src/Umbraco.Web/Mvc/EnsurePublishedContentRequestAttribute.cs index e9d39849eb..3ca7e861ac 100644 --- a/src/Umbraco.Web/Mvc/EnsurePublishedContentRequestAttribute.cs +++ b/src/Umbraco.Web/Mvc/EnsurePublishedContentRequestAttribute.cs @@ -1,5 +1,6 @@ using System; using System.Web.Mvc; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Web.Routing; using Umbraco.Core; using Umbraco.Core.Composing; diff --git a/src/Umbraco.Web/Mvc/PluginController.cs b/src/Umbraco.Web/Mvc/PluginController.cs index 4490c8dda5..59521255c9 100644 --- a/src/Umbraco.Web/Mvc/PluginController.cs +++ b/src/Umbraco.Web/Mvc/PluginController.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Concurrent; using System.Web.Mvc; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; diff --git a/src/Umbraco.Web/Mvc/RenderRouteHandler.cs b/src/Umbraco.Web/Mvc/RenderRouteHandler.cs index 7ba870553b..cbad7de789 100644 --- a/src/Umbraco.Web/Mvc/RenderRouteHandler.cs +++ b/src/Umbraco.Web/Mvc/RenderRouteHandler.cs @@ -4,6 +4,7 @@ using System.Web; using System.Web.Mvc; using System.Web.Routing; using System.Web.SessionState; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Composing; diff --git a/src/Umbraco.Web/Mvc/UmbracoViewPageOfTModel.cs b/src/Umbraco.Web/Mvc/UmbracoViewPageOfTModel.cs index 43c3102a62..503ea59550 100644 --- a/src/Umbraco.Web/Mvc/UmbracoViewPageOfTModel.cs +++ b/src/Umbraco.Web/Mvc/UmbracoViewPageOfTModel.cs @@ -3,6 +3,7 @@ using System.Text; using System.Web; using System.Web.Mvc; using System.Web.WebPages; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Umbraco.Core; using Umbraco.Core.Cache; diff --git a/src/Umbraco.Web/Mvc/UmbracoVirtualNodeRouteHandler.cs b/src/Umbraco.Web/Mvc/UmbracoVirtualNodeRouteHandler.cs index 38d89aef59..c00eb24cca 100644 --- a/src/Umbraco.Web/Mvc/UmbracoVirtualNodeRouteHandler.cs +++ b/src/Umbraco.Web/Mvc/UmbracoVirtualNodeRouteHandler.cs @@ -1,6 +1,7 @@ using System.Web; using System.Web.Mvc; using System.Web.Routing; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core.Models.PublishedContent; using Umbraco.Web.Models; using Umbraco.Web.Routing; diff --git a/src/Umbraco.Web/PublishedContentExtensions.cs b/src/Umbraco.Web/PublishedContentExtensions.cs index 5891f3abb4..14ba06610e 100644 --- a/src/Umbraco.Web/PublishedContentExtensions.cs +++ b/src/Umbraco.Web/PublishedContentExtensions.cs @@ -4,6 +4,7 @@ using System.Data; using System.Linq; using System.Web; using Examine; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Models.PublishedContent; diff --git a/src/Umbraco.Web/Runtime/WebInitialComposer.cs b/src/Umbraco.Web/Runtime/WebInitialComposer.cs index 3cfe3f409a..5f227b37ad 100644 --- a/src/Umbraco.Web/Runtime/WebInitialComposer.cs +++ b/src/Umbraco.Web/Runtime/WebInitialComposer.cs @@ -31,28 +31,28 @@ namespace Umbraco.Web.Runtime // register membership stuff - composition.Register(factory => MembershipProviderExtensions.GetMembersMembershipProvider()); - composition.Register(factory => Roles.Enabled ? Roles.Provider : new MembersRoleProvider(factory.GetRequiredService())); + composition.Services.AddTransient(factory => MembershipProviderExtensions.GetMembersMembershipProvider()); + composition.Services.AddTransient(factory => Roles.Enabled ? Roles.Provider : new MembersRoleProvider(factory.GetRequiredService())); composition.Services.AddScoped(); - composition.Register(factory => factory.GetRequiredService().PublishedSnapshot.Members); - composition.RegisterUnique(); - composition.RegisterUnique(); + composition.Services.AddTransient(factory => factory.GetRequiredService().PublishedSnapshot.Members); + composition.Services.AddUnique(); + composition.Services.AddUnique(); // register the umbraco helper - this is Transient! very important! // also, if not level.Run, we cannot really use the helper (during upgrade...) // so inject a "void" helper (not exactly pretty but...) if (composition.RuntimeState.Level == RuntimeLevel.Run) - composition.Register(factory => + composition.Services.AddTransient(factory => { var umbCtx = factory.GetRequiredService(); return new UmbracoHelper(umbCtx.IsFrontEndUmbracoRequest ? umbCtx.PublishedRequest?.PublishedContent : null, factory.GetRequiredService(), factory.GetRequiredService(), factory.GetRequiredService()); }); else - composition.Register(_ => new UmbracoHelper()); + composition.Services.AddTransient(_ => new UmbracoHelper()); - composition.RegisterUnique(); + composition.Services.AddUnique(); // configure the container for web //composition.ConfigureForWeb(); diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index 31202255dd..a881e3f704 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -73,13 +73,6 @@ 2.7.0.100 - - - - - 2.0.0 - - diff --git a/src/Umbraco.Web/UmbracoApplicationBase.cs b/src/Umbraco.Web/UmbracoApplicationBase.cs index 8ca7aac038..83f056c77d 100644 --- a/src/Umbraco.Web/UmbracoApplicationBase.cs +++ b/src/Umbraco.Web/UmbracoApplicationBase.cs @@ -22,7 +22,6 @@ using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Logging.Serilog; using Umbraco.Core.Logging.Serilog.Enrichers; -using Umbraco.Infrastructure.Composing; using Umbraco.Net; using Umbraco.Web.Hosting; using Umbraco.Web.Logging; @@ -44,7 +43,7 @@ namespace Umbraco.Web private readonly ConnectionStrings _connectionStrings; private readonly IIOHelper _ioHelper; private IRuntime _runtime; - private IFactory _factory; + private IServiceProvider _factory; private ILoggerFactory _loggerFactory; protected UmbracoApplicationBase() @@ -145,9 +144,9 @@ namespace Umbraco.Web /// /// Gets the application register. /// - protected virtual IRegister GetRegister(GlobalSettings globalSettings) + protected virtual IServiceCollection GetRegister(GlobalSettings globalSettings) { - return ServiceCollectionRegistryAdapter.Wrap(new ServiceCollection()); + return new ServiceCollection(); } // events - in the order they trigger @@ -285,8 +284,6 @@ namespace Umbraco.Web } Current.Logger.DisposeIfDisposable(); - // dispose the container and everything - Current.Reset(); } // called by ASP.NET (auto event wireup) once per app domain diff --git a/src/Umbraco.Web/UmbracoDefaultOwinStartup.cs b/src/Umbraco.Web/UmbracoDefaultOwinStartup.cs index caa3f441df..e14c889492 100644 --- a/src/Umbraco.Web/UmbracoDefaultOwinStartup.cs +++ b/src/Umbraco.Web/UmbracoDefaultOwinStartup.cs @@ -1,4 +1,5 @@ using System; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Microsoft.Owin; using Owin; diff --git a/src/Umbraco.Web/WebApi/Filters/FeatureAuthorizeAttribute.cs b/src/Umbraco.Web/WebApi/Filters/FeatureAuthorizeAttribute.cs index eb0c36e189..148e8638eb 100644 --- a/src/Umbraco.Web/WebApi/Filters/FeatureAuthorizeAttribute.cs +++ b/src/Umbraco.Web/WebApi/Filters/FeatureAuthorizeAttribute.cs @@ -3,6 +3,7 @@ using System.Web.Http.Controllers; using Umbraco.Web.Composing; using Umbraco.Web.Features; using Umbraco.Core; +using Microsoft.Extensions.DependencyInjection; namespace Umbraco.Web.WebApi.Filters { diff --git a/src/Umbraco.Web/WebApi/HttpActionContextExtensions.cs b/src/Umbraco.Web/WebApi/HttpActionContextExtensions.cs index ced67bc791..f41dcac6eb 100644 --- a/src/Umbraco.Web/WebApi/HttpActionContextExtensions.cs +++ b/src/Umbraco.Web/WebApi/HttpActionContextExtensions.cs @@ -5,6 +5,7 @@ using System.Net.Http; using System.Threading.Tasks; using System.Web.Http; using System.Web.Http.Controllers; +using Microsoft.Extensions.DependencyInjection; using Newtonsoft.Json; using Umbraco.Web.Composing; using Umbraco.Core.IO; diff --git a/src/Umbraco.Web/WebApi/UmbracoApiControllerBase.cs b/src/Umbraco.Web/WebApi/UmbracoApiControllerBase.cs index 308358f4e8..99a9a63487 100644 --- a/src/Umbraco.Web/WebApi/UmbracoApiControllerBase.cs +++ b/src/Umbraco.Web/WebApi/UmbracoApiControllerBase.cs @@ -1,6 +1,7 @@ using System; using System.Web; using System.Web.Http; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Owin; using Umbraco.Core; using Umbraco.Core.Cache; diff --git a/src/Umbraco.Web/WebAssets/CDF/ClientDependencyComposer.cs b/src/Umbraco.Web/WebAssets/CDF/ClientDependencyComposer.cs index 3fb7399a2b..bb8c2be059 100644 --- a/src/Umbraco.Web/WebAssets/CDF/ClientDependencyComposer.cs +++ b/src/Umbraco.Web/WebAssets/CDF/ClientDependencyComposer.cs @@ -9,7 +9,7 @@ namespace Umbraco.Web.WebAssets.CDF public override void Compose(Composition composition) { base.Compose(composition); - composition.RegisterUnique(); + composition.Services.AddUnique(); } } } From bdb8f34da3e400a0dd69fa81e4227e5e0459dbfd Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Fri, 30 Oct 2020 13:56:13 +0100 Subject: [PATCH 23/56] Netcore: Health check notifier hosted service (#9295) * Implemented health check notifier as a hosted service. Added validation to health check settings. * Registered health check notifier as a hosted service. Modified health check nested settings to use concrete classes to align with other configuration models. * Resolved issues with email sending using development server. * PR review comments and fixed failing unit test. * Changed period and delay millisecond and hourly values to TimeSpans. Changed configuration of first run time for health check notifications to use H:mm format. * Set up SecureSocketOptions as a locally defined enum. * Tightened up time format validation to verify input is an actual time (with hours and minutes only) and not a timespan. * Aligned naming and namespace of health check configuration related classes with other configuration classes. * Created constants for hex colors used in formatting health check results as HTML. * Revert "Tightened up time format validation to verify input is an actual time (with hours and minutes only) and not a timespan." This reverts commit f9bb8a7a825bcb58146879f18b47922e09453e2d. * Renamed method to be clear validation is of a TimeSpan and not a time. Co-authored-by: Bjarke Berg --- .../Models/DisabledHealthCheckSettings.cs} | 6 +- .../HealthCheckSettingsExtensions.cs | 25 +++ .../HealthChecksNotificationMethodSettings.cs | 16 ++ .../HealthChecksNotificationSettings.cs | 19 ++ .../Models/HealthChecksSettings.cs | 19 +- .../Configuration/Models/SmtpSettings.cs | 18 +- .../Validation/ConfigurationValidatorBase.cs | 13 ++ .../Validation/ContentSettingsValidator.cs | 1 - .../HealthChecksSettingsValidator.cs | 22 +++ src/Umbraco.Core/DateTimeExtensions.cs | 2 +- src/Umbraco.Core/HealthCheck/HealthCheck.cs | 4 +- .../HealthCheck/INotificationMethod.cs | 13 -- .../INotificationMethodSettings.cs | 8 - src/Umbraco.Core/StringExtensions.cs | 15 ++ .../HealthCheck/HealthCheckResults.cs | 12 +- .../EmailNotificationMethod.cs | 4 +- .../IHealthCheckNotificationMethod.cs | 3 +- .../NotificationMethodBase.cs | 10 +- .../HealthCheckNotifier.cs | 96 +++++----- .../RecurringHostedServiceBase.cs | 47 +++++ .../Runtime/CoreInitialComposer.cs | 1 - .../Scheduling/SchedulerComponent.cs | 45 +---- .../Users/EmailSender.cs | 27 +-- .../HealthCheckSettingsExtensionsTests.cs | 41 ++++ .../ContentSettingsValidatorTests.cs | 1 - .../HealthChecksSettingsValidatorTests.cs | 42 ++++ .../StringExtensionsTests.cs | 13 +- .../HealthCheckNotifierTests.cs | 174 +++++++++++++++++ .../Extensions/UmbracoBuilderExtensions.cs | 3 +- .../Builder/UmbracoBuilderExtensions.cs | 3 + .../UmbracoCoreServiceCollectionExtensions.cs | 181 ++++++++++-------- 31 files changed, 636 insertions(+), 248 deletions(-) rename src/Umbraco.Core/{HealthCheck/Checks/DisabledHealthCheck.cs => Configuration/Models/DisabledHealthCheckSettings.cs} (64%) create mode 100644 src/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensions.cs create mode 100644 src/Umbraco.Core/Configuration/Models/HealthChecksNotificationMethodSettings.cs create mode 100644 src/Umbraco.Core/Configuration/Models/HealthChecksNotificationSettings.cs create mode 100644 src/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidator.cs delete mode 100644 src/Umbraco.Core/HealthCheck/INotificationMethod.cs delete mode 100644 src/Umbraco.Core/HealthCheck/INotificationMethodSettings.cs rename src/Umbraco.Infrastructure/{Scheduling => HostedServices}/HealthCheckNotifier.cs (67%) create mode 100644 src/Umbraco.Infrastructure/HostedServices/RecurringHostedServiceBase.cs create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensionsTests.cs create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidatorTests.cs create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs diff --git a/src/Umbraco.Core/HealthCheck/Checks/DisabledHealthCheck.cs b/src/Umbraco.Core/Configuration/Models/DisabledHealthCheckSettings.cs similarity index 64% rename from src/Umbraco.Core/HealthCheck/Checks/DisabledHealthCheck.cs rename to src/Umbraco.Core/Configuration/Models/DisabledHealthCheckSettings.cs index 99ff05ed55..1d96a9027f 100644 --- a/src/Umbraco.Core/HealthCheck/Checks/DisabledHealthCheck.cs +++ b/src/Umbraco.Core/Configuration/Models/DisabledHealthCheckSettings.cs @@ -1,11 +1,13 @@ using System; -namespace Umbraco.Core.HealthCheck.Checks +namespace Umbraco.Core.Configuration.Models { - public class DisabledHealthCheck + public class DisabledHealthCheckSettings { public Guid Id { get; set; } + public DateTime DisabledOn { get; set; } + public int DisabledBy { get; set; } } } diff --git a/src/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensions.cs b/src/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensions.cs new file mode 100644 index 0000000000..3fa37a0b19 --- /dev/null +++ b/src/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensions.cs @@ -0,0 +1,25 @@ +using System; + +namespace Umbraco.Core.Configuration.Models.Extensions +{ + public static class HealthCheckSettingsExtensions + { + public static TimeSpan GetNotificationDelay(this HealthChecksSettings settings, DateTime now, TimeSpan defaultDelay) + { + // If first run time not set, start with just small delay after application start. + var firstRunTime = settings.Notification.FirstRunTime; + if (string.IsNullOrEmpty(firstRunTime)) + { + return defaultDelay; + } + else + { + // Otherwise start at scheduled time. + var delay = TimeSpan.FromMinutes(now.PeriodicMinutesFrom(firstRunTime)); + return (delay < defaultDelay) + ? defaultDelay + : delay; + } + } + } +} diff --git a/src/Umbraco.Core/Configuration/Models/HealthChecksNotificationMethodSettings.cs b/src/Umbraco.Core/Configuration/Models/HealthChecksNotificationMethodSettings.cs new file mode 100644 index 0000000000..1cfc4f9168 --- /dev/null +++ b/src/Umbraco.Core/Configuration/Models/HealthChecksNotificationMethodSettings.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; +using Umbraco.Core.HealthCheck; + +namespace Umbraco.Core.Configuration.Models +{ + public class HealthChecksNotificationMethodSettings + { + public bool Enabled { get; set; } = false; + + public HealthCheckNotificationVerbosity Verbosity { get; set; } = HealthCheckNotificationVerbosity.Summary; + + public bool FailureOnly { get; set; } = false; + + public IDictionary Settings { get; set; } = new Dictionary(); + } +} diff --git a/src/Umbraco.Core/Configuration/Models/HealthChecksNotificationSettings.cs b/src/Umbraco.Core/Configuration/Models/HealthChecksNotificationSettings.cs new file mode 100644 index 0000000000..052b5a4997 --- /dev/null +++ b/src/Umbraco.Core/Configuration/Models/HealthChecksNotificationSettings.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Umbraco.Core.Configuration.Models +{ + public class HealthChecksNotificationSettings + { + public bool Enabled { get; set; } = false; + + public string FirstRunTime { get; set; } = string.Empty; + + public TimeSpan Period { get; set; } = TimeSpan.FromHours(24); + + public IDictionary NotificationMethods { get; set; } = new Dictionary(); + + public IEnumerable DisabledChecks { get; set; } = Enumerable.Empty(); + } +} diff --git a/src/Umbraco.Core/Configuration/Models/HealthChecksSettings.cs b/src/Umbraco.Core/Configuration/Models/HealthChecksSettings.cs index 7600b946fd..705611b0c1 100644 --- a/src/Umbraco.Core/Configuration/Models/HealthChecksSettings.cs +++ b/src/Umbraco.Core/Configuration/Models/HealthChecksSettings.cs @@ -1,27 +1,12 @@ using System.Collections.Generic; using System.Linq; -using Umbraco.Core.HealthCheck; -using Umbraco.Core.HealthCheck.Checks; namespace Umbraco.Core.Configuration.Models { public class HealthChecksSettings { - public IEnumerable DisabledChecks { get; set; } = Enumerable.Empty(); + public IEnumerable DisabledChecks { get; set; } = Enumerable.Empty(); - public HealthCheckNotificationSettings NotificationSettings { get; set; } = new HealthCheckNotificationSettings(); - - public class HealthCheckNotificationSettings - { - public bool Enabled { get; set; } = false; - - public string FirstRunTime { get; set; } - - public int PeriodInHours { get; set; } = 24; - - public IReadOnlyDictionary NotificationMethods { get; set; } = new Dictionary(); - - public IEnumerable DisabledChecks { get; set; } = Enumerable.Empty(); - } + public HealthChecksNotificationSettings Notification { get; set; } = new HealthChecksNotificationSettings(); } } diff --git a/src/Umbraco.Core/Configuration/Models/SmtpSettings.cs b/src/Umbraco.Core/Configuration/Models/SmtpSettings.cs index 7c19f28d87..c1ba5edea2 100644 --- a/src/Umbraco.Core/Configuration/Models/SmtpSettings.cs +++ b/src/Umbraco.Core/Configuration/Models/SmtpSettings.cs @@ -1,10 +1,22 @@ -using System; -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; using System.Net.Mail; using Umbraco.Core.Configuration.Models.Validation; namespace Umbraco.Core.Configuration.Models { + /// + /// Matches MailKit.Security.SecureSocketOptions and defined locally to avoid having to take + /// thi + /// + public enum SecureSocketOptions + { + None = 0, + Auto = 1, + SslOnConnect = 2, + StartTls = 3, + StartTlsWhenAvailable = 4 + } + public class SmtpSettings : ValidatableEntryBase { [Required] @@ -15,6 +27,8 @@ namespace Umbraco.Core.Configuration.Models public int Port { get; set; } + public SecureSocketOptions SecureSocketOptions { get; set; } = SecureSocketOptions.Auto; + public string PickupDirectoryLocation { get; set; } public SmtpDeliveryMethod DeliveryMethod { get; set; } = SmtpDeliveryMethod.Network; diff --git a/src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidatorBase.cs b/src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidatorBase.cs index fe8d077166..9b7f02a60c 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidatorBase.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidatorBase.cs @@ -41,5 +41,18 @@ namespace Umbraco.Core.Configuration.Models.Validation message = string.Empty; return true; } + + public bool ValidateOptionalTime(string configPath, string value, out string message) + { + if (!string.IsNullOrEmpty(value) && !value.IsValidTimeSpan()) + { + message = $"Configuration entry {configPath} contains an invalid time value."; + return false; + } + + message = string.Empty; + return true; + } + } } diff --git a/src/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidator.cs b/src/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidator.cs index 9ed22f922e..f6e839aa39 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidator.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidator.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using Microsoft.Extensions.Options; -using Umbraco.Core.Macros; namespace Umbraco.Core.Configuration.Models.Validation { diff --git a/src/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidator.cs b/src/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidator.cs new file mode 100644 index 0000000000..fe6a4d056b --- /dev/null +++ b/src/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidator.cs @@ -0,0 +1,22 @@ +using Microsoft.Extensions.Options; + +namespace Umbraco.Core.Configuration.Models.Validation +{ + public class HealthChecksSettingsValidator : ConfigurationValidatorBase, IValidateOptions + { + public ValidateOptionsResult Validate(string name, HealthChecksSettings options) + { + if (!ValidateNotificationFirstRunTime(options.Notification.FirstRunTime, out var message)) + { + return ValidateOptionsResult.Fail(message); + } + + return ValidateOptionsResult.Success; + } + + private bool ValidateNotificationFirstRunTime(string value, out string message) + { + return ValidateOptionalTime($"{Constants.Configuration.ConfigHealthChecks}:{nameof(HealthChecksSettings.Notification)}:{nameof(HealthChecksSettings.Notification.FirstRunTime)}", value, out message); + } + } +} diff --git a/src/Umbraco.Core/DateTimeExtensions.cs b/src/Umbraco.Core/DateTimeExtensions.cs index f665aaa8ed..1920205b69 100644 --- a/src/Umbraco.Core/DateTimeExtensions.cs +++ b/src/Umbraco.Core/DateTimeExtensions.cs @@ -46,7 +46,7 @@ namespace Umbraco.Core /// /// Calculates the number of minutes from a date time, on a rolling daily basis (so if - /// date time is before the time, calculate onto next day) + /// date time is before the time, calculate onto next day). /// /// Date to start from /// Time to compare against (in Hmm form, e.g. 330, 2200) diff --git a/src/Umbraco.Core/HealthCheck/HealthCheck.cs b/src/Umbraco.Core/HealthCheck/HealthCheck.cs index 89a1f41f4d..9f4e364be6 100644 --- a/src/Umbraco.Core/HealthCheck/HealthCheck.cs +++ b/src/Umbraco.Core/HealthCheck/HealthCheck.cs @@ -13,8 +13,8 @@ namespace Umbraco.Core.HealthCheck { protected HealthCheck() { - Type thisType = GetType(); - HealthCheckAttribute meta = thisType.GetCustomAttribute(false); + var thisType = GetType(); + var meta = thisType.GetCustomAttribute(false); if (meta == null) { throw new InvalidOperationException($"The health check {thisType} requires a {typeof(HealthCheckAttribute)}"); diff --git a/src/Umbraco.Core/HealthCheck/INotificationMethod.cs b/src/Umbraco.Core/HealthCheck/INotificationMethod.cs deleted file mode 100644 index 9c4ec70cfe..0000000000 --- a/src/Umbraco.Core/HealthCheck/INotificationMethod.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Collections.Generic; - -namespace Umbraco.Core.HealthCheck -{ - public interface INotificationMethod - { - string Alias { get; } - bool Enabled { get; } - HealthCheckNotificationVerbosity Verbosity { get; } - bool FailureOnly { get; } - IReadOnlyDictionary Settings { get; } - } -} diff --git a/src/Umbraco.Core/HealthCheck/INotificationMethodSettings.cs b/src/Umbraco.Core/HealthCheck/INotificationMethodSettings.cs deleted file mode 100644 index 01ad667d94..0000000000 --- a/src/Umbraco.Core/HealthCheck/INotificationMethodSettings.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Umbraco.Core.HealthCheck -{ - public interface INotificationMethodSettings - { - string Key { get; } - string Value { get; } - } -} diff --git a/src/Umbraco.Core/StringExtensions.cs b/src/Umbraco.Core/StringExtensions.cs index 67b0b49a45..93d664a2bd 100644 --- a/src/Umbraco.Core/StringExtensions.cs +++ b/src/Umbraco.Core/StringExtensions.cs @@ -1478,5 +1478,20 @@ namespace Umbraco.Core { return shortStringHelper.CleanStringForSafeFileName(text, culture); } + + /// + /// Validates a string matches a time stamp. + /// + /// String with timespan representation (in standard timespan format: https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-timespan-format-strings) + /// + public static bool IsValidTimeSpan(this string input) + { + if (string.IsNullOrEmpty(input)) + { + return false; + } + + return TimeSpan.TryParse(input, out var _); + } } } diff --git a/src/Umbraco.Infrastructure/HealthCheck/HealthCheckResults.cs b/src/Umbraco.Infrastructure/HealthCheck/HealthCheckResults.cs index 1561645be9..281b0fc445 100644 --- a/src/Umbraco.Infrastructure/HealthCheck/HealthCheckResults.cs +++ b/src/Umbraco.Infrastructure/HealthCheck/HealthCheckResults.cs @@ -128,11 +128,17 @@ namespace Umbraco.Infrastructure.HealthCheck return html; } + internal Dictionary> ResultsAsDictionary => _results; + private string ApplyHtmlHighlighting(string html) { - html = ApplyHtmlHighlightingForStatus(html, StatusResultType.Success, "5cb85c"); - html = ApplyHtmlHighlightingForStatus(html, StatusResultType.Warning, "f0ad4e"); - return ApplyHtmlHighlightingForStatus(html, StatusResultType.Error, "d9534f"); + const string SuccessHexColor = "5cb85c"; + const string WarningHexColor = "f0ad4e"; + const string ErrorHexColor = "d9534f"; + + html = ApplyHtmlHighlightingForStatus(html, StatusResultType.Success, SuccessHexColor); + html = ApplyHtmlHighlightingForStatus(html, StatusResultType.Warning, WarningHexColor); + return ApplyHtmlHighlightingForStatus(html, StatusResultType.Error, ErrorHexColor); } private string ApplyHtmlHighlightingForStatus(string html, StatusResultType status, string color) diff --git a/src/Umbraco.Infrastructure/HealthCheck/NotificationMethods/EmailNotificationMethod.cs b/src/Umbraco.Infrastructure/HealthCheck/NotificationMethods/EmailNotificationMethod.cs index 37a3b5b072..29135ea1c4 100644 --- a/src/Umbraco.Infrastructure/HealthCheck/NotificationMethods/EmailNotificationMethod.cs +++ b/src/Umbraco.Infrastructure/HealthCheck/NotificationMethods/EmailNotificationMethod.cs @@ -28,7 +28,7 @@ namespace Umbraco.Web.HealthCheck.NotificationMethods IOptions contentSettings) : base(healthChecksSettings) { - var recipientEmail = Settings?["recipientEmail"]?.Value; + var recipientEmail = Settings?["RecipientEmail"]; if (string.IsNullOrWhiteSpace(recipientEmail)) { Enabled = false; @@ -45,7 +45,7 @@ namespace Umbraco.Web.HealthCheck.NotificationMethods public string RecipientEmail { get; } - public override async Task SendAsync(HealthCheckResults results, CancellationToken token) + public override async Task SendAsync(HealthCheckResults results) { if (ShouldSend(results) == false) { diff --git a/src/Umbraco.Infrastructure/HealthCheck/NotificationMethods/IHealthCheckNotificationMethod.cs b/src/Umbraco.Infrastructure/HealthCheck/NotificationMethods/IHealthCheckNotificationMethod.cs index fdf72251be..77614c41e3 100644 --- a/src/Umbraco.Infrastructure/HealthCheck/NotificationMethods/IHealthCheckNotificationMethod.cs +++ b/src/Umbraco.Infrastructure/HealthCheck/NotificationMethods/IHealthCheckNotificationMethod.cs @@ -8,6 +8,7 @@ namespace Umbraco.Web.HealthCheck.NotificationMethods public interface IHealthCheckNotificationMethod : IDiscoverable { bool Enabled { get; } - Task SendAsync(HealthCheckResults results, CancellationToken token); + + Task SendAsync(HealthCheckResults results); } } diff --git a/src/Umbraco.Infrastructure/HealthCheck/NotificationMethods/NotificationMethodBase.cs b/src/Umbraco.Infrastructure/HealthCheck/NotificationMethods/NotificationMethodBase.cs index 39025df2ab..eeb8452492 100644 --- a/src/Umbraco.Infrastructure/HealthCheck/NotificationMethods/NotificationMethodBase.cs +++ b/src/Umbraco.Infrastructure/HealthCheck/NotificationMethods/NotificationMethodBase.cs @@ -1,11 +1,9 @@ using System.Collections.Generic; using System.Reflection; -using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.Options; using Umbraco.Core.Configuration.Models; using Umbraco.Core.HealthCheck; -using Umbraco.Core.HealthCheck.Checks; using Umbraco.Infrastructure.HealthCheck; namespace Umbraco.Web.HealthCheck.NotificationMethods @@ -22,8 +20,8 @@ namespace Umbraco.Web.HealthCheck.NotificationMethods return; } - var notificationMethods = healthCheckSettings.Value.NotificationSettings.NotificationMethods; - if(!notificationMethods.TryGetValue(attribute.Alias, out var notificationMethod)) + var notificationMethods = healthCheckSettings.Value.Notification.NotificationMethods; + if (!notificationMethods.TryGetValue(attribute.Alias, out var notificationMethod)) { Enabled = false; return; @@ -41,13 +39,13 @@ namespace Umbraco.Web.HealthCheck.NotificationMethods public HealthCheckNotificationVerbosity Verbosity { get; protected set; } - public IReadOnlyDictionary Settings { get; } + public IDictionary Settings { get; } protected bool ShouldSend(HealthCheckResults results) { return Enabled && (!FailureOnly || !results.AllChecksSuccessful); } - public abstract Task SendAsync(HealthCheckResults results, CancellationToken token); + public abstract Task SendAsync(HealthCheckResults results); } } diff --git a/src/Umbraco.Infrastructure/Scheduling/HealthCheckNotifier.cs b/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs similarity index 67% rename from src/Umbraco.Infrastructure/Scheduling/HealthCheckNotifier.cs rename to src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs index 33eff2c949..af0a0f335c 100644 --- a/src/Umbraco.Infrastructure/Scheduling/HealthCheckNotifier.cs +++ b/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs @@ -1,77 +1,86 @@ -using System.Linq; -using System.Threading; -using System.Threading.Tasks; +using System; +using System.Linq; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; using Umbraco.Core; using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Configuration.Models.Extensions; using Umbraco.Core.HealthCheck; using Umbraco.Core.Logging; using Umbraco.Core.Scoping; using Umbraco.Core.Sync; -using Umbraco.Web.HealthCheck; -using Microsoft.Extensions.Logging; using Umbraco.Infrastructure.HealthCheck; +using Umbraco.Web.HealthCheck; -namespace Umbraco.Web.Scheduling +namespace Umbraco.Infrastructure.HostedServices { - public class HealthCheckNotifier : RecurringTaskBase + /// + /// Hosted service implementation for recurring health check notifications. + /// + public class HealthCheckNotifier : RecurringHostedServiceBase { - private readonly IMainDom _mainDom; + private readonly HealthChecksSettings _healthChecksSettings; private readonly HealthCheckCollection _healthChecks; private readonly HealthCheckNotificationMethodCollection _notifications; - private readonly IScopeProvider _scopeProvider; - private readonly IProfilingLogger _profilingLogger; - private readonly ILogger _logger; - private readonly HealthChecksSettings _healthChecksSettings; - private readonly IServerRegistrar _serverRegistrar; private readonly IRuntimeState _runtimeState; + private readonly IServerRegistrar _serverRegistrar; + private readonly IMainDom _mainDom; + private readonly IScopeProvider _scopeProvider; + private readonly ILogger _logger; + private readonly IProfilingLogger _profilingLogger; public HealthCheckNotifier( - IBackgroundTaskRunner runner, - int delayMilliseconds, - int periodMilliseconds, + IOptions healthChecksSettings, HealthCheckCollection healthChecks, HealthCheckNotificationMethodCollection notifications, - IMainDom mainDom, - IProfilingLogger profilingLogger , - ILogger logger, - HealthChecksSettings healthChecksSettings, - IServerRegistrar serverRegistrar, IRuntimeState runtimeState, - IScopeProvider scopeProvider) - : base(runner, delayMilliseconds, periodMilliseconds) + IServerRegistrar serverRegistrar, + IMainDom mainDom, + IScopeProvider scopeProvider, + ILogger logger, + IProfilingLogger profilingLogger) + : base(healthChecksSettings.Value.Notification.Period, + healthChecksSettings.Value.GetNotificationDelay(DateTime.Now, DefaultDelay)) { + _healthChecksSettings = healthChecksSettings.Value; _healthChecks = healthChecks; _notifications = notifications; + _runtimeState = runtimeState; + _serverRegistrar = serverRegistrar; _mainDom = mainDom; _scopeProvider = scopeProvider; - _runtimeState = runtimeState; - _profilingLogger = profilingLogger ; _logger = logger; - _healthChecksSettings = healthChecksSettings; - _serverRegistrar = serverRegistrar; - _runtimeState = runtimeState; + _profilingLogger = profilingLogger; } - public override async Task PerformRunAsync(CancellationToken token) + + public override async void ExecuteAsync(object state) { + if (_healthChecksSettings.Notification.Enabled == false) + { + return; + } + if (_runtimeState.Level != RuntimeLevel.Run) - return true; // repeat... + { + return; + } switch (_serverRegistrar.GetCurrentServerRole()) { case ServerRole.Replica: _logger.LogDebug("Does not run on replica servers."); - return true; // DO repeat, server role can change + return; case ServerRole.Unknown: _logger.LogDebug("Does not run on servers with unknown role."); - return true; // DO repeat, server role can change + return; } - // ensure we do not run if not main domain, but do NOT lock it + // Ensure we do not run if not main domain, but do NOT lock it if (_mainDom.IsMainDom == false) { _logger.LogDebug("Does not run if not MainDom."); - return false; // do NOT repeat, going down + return; } // Ensure we use an explicit scope since we are running on a background thread and plugin health @@ -80,13 +89,10 @@ namespace Umbraco.Web.Scheduling using (var scope = _scopeProvider.CreateScope()) using (_profilingLogger.DebugDuration("Health checks executing", "Health checks complete")) { - var healthCheckConfig = _healthChecksSettings; - - // Don't notify for any checks that are disabled, nor for any disabled - // just for notifications - var disabledCheckIds = healthCheckConfig.NotificationSettings.DisabledChecks + // Don't notify for any checks that are disabled, nor for any disabled just for notifications. + var disabledCheckIds = _healthChecksSettings.Notification.DisabledChecks .Select(x => x.Id) - .Union(healthCheckConfig.DisabledChecks + .Union(_healthChecksSettings.DisabledChecks .Select(x => x.Id)) .Distinct() .ToArray(); @@ -97,14 +103,12 @@ namespace Umbraco.Web.Scheduling var results = new HealthCheckResults(checks); results.LogResults(); - // Send using registered notification methods that are enabled + // Send using registered notification methods that are enabled. foreach (var notificationMethod in _notifications.Where(x => x.Enabled)) - await notificationMethod.SendAsync(results, token); + { + await notificationMethod.SendAsync(results); + } } - - return true; // repeat } - - public override bool IsAsync => true; } } diff --git a/src/Umbraco.Infrastructure/HostedServices/RecurringHostedServiceBase.cs b/src/Umbraco.Infrastructure/HostedServices/RecurringHostedServiceBase.cs new file mode 100644 index 0000000000..071ada0b62 --- /dev/null +++ b/src/Umbraco.Infrastructure/HostedServices/RecurringHostedServiceBase.cs @@ -0,0 +1,47 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Extensions.Hosting; + +namespace Umbraco.Infrastructure.HostedServices +{ + /// + /// Provides a base class for recurring background tasks implemented as hosted services. + /// + /// + /// See: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-3.1&tabs=visual-studio#timed-background-tasks + /// + public abstract class RecurringHostedServiceBase : IHostedService, IDisposable + { + protected static readonly TimeSpan DefaultDelay = TimeSpan.FromMinutes(3); + + private readonly TimeSpan _period; + private readonly TimeSpan _delay; + private Timer _timer; + + protected RecurringHostedServiceBase(TimeSpan period, TimeSpan delay) + { + _period = period; + _delay = delay; + } + + public Task StartAsync(CancellationToken cancellationToken) + { + _timer = new Timer(ExecuteAsync, null, (int)_delay.TotalMilliseconds, (int)_period.TotalMilliseconds); + return Task.CompletedTask; + } + + public abstract void ExecuteAsync(object state); + + public Task StopAsync(CancellationToken cancellationToken) + { + _timer?.Change(Timeout.Infinite, 0); + return Task.CompletedTask; + } + + public void Dispose() + { + _timer?.Dispose(); + } + } +} diff --git a/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs b/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs index 8ce59b49e7..01bfb79e26 100644 --- a/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs +++ b/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs @@ -303,7 +303,6 @@ namespace Umbraco.Core.Runtime composition.HealthChecks() .Add(() => composition.TypeLoader.GetTypes()); - composition.WithCollectionBuilder() .Add(() => composition.TypeLoader.GetTypes()); diff --git a/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs b/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs index 6e4b4bb629..49999c9c56 100644 --- a/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs +++ b/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs @@ -36,10 +36,7 @@ namespace Umbraco.Web.Scheduling private readonly ILoggerFactory _loggerFactory; private readonly IApplicationShutdownRegistry _applicationShutdownRegistry; private readonly IScopeProvider _scopeProvider; - private readonly HealthCheckCollection _healthChecks; - private readonly HealthCheckNotificationMethodCollection _notifications; private readonly IUmbracoContextFactory _umbracoContextFactory; - private readonly HealthChecksSettings _healthChecksSettings; private readonly IServerMessenger _serverMessenger; private readonly IRequestAccessor _requestAccessor; private readonly IBackofficeSecurityFactory _backofficeSecurityFactory; @@ -59,9 +56,8 @@ namespace Umbraco.Web.Scheduling public SchedulerComponent(IRuntimeState runtime, IMainDom mainDom, IServerRegistrar serverRegistrar, IContentService contentService, IAuditService auditService, - HealthCheckCollection healthChecks, HealthCheckNotificationMethodCollection notifications, - IScopeProvider scopeProvider, IUmbracoContextFactory umbracoContextFactory, IProfilingLogger profilingLogger , ILoggerFactory loggerFactory, - IApplicationShutdownRegistry applicationShutdownRegistry, IOptions healthChecksSettings, + IScopeProvider scopeProvider, IUmbracoContextFactory umbracoContextFactory, IProfilingLogger profilingLogger, ILoggerFactory loggerFactory, + IApplicationShutdownRegistry applicationShutdownRegistry, IServerMessenger serverMessenger, IRequestAccessor requestAccessor, IOptions loggingSettings, IOptions keepAliveSettings, IHostingEnvironment hostingEnvironment, @@ -73,15 +69,11 @@ namespace Umbraco.Web.Scheduling _contentService = contentService; _auditService = auditService; _scopeProvider = scopeProvider; - _profilingLogger = profilingLogger ; + _profilingLogger = profilingLogger; _loggerFactory = loggerFactory; _logger = loggerFactory.CreateLogger(); _applicationShutdownRegistry = applicationShutdownRegistry; _umbracoContextFactory = umbracoContextFactory; - - _healthChecks = healthChecks; - _notifications = notifications; - _healthChecksSettings = healthChecksSettings.Value ?? throw new ArgumentNullException(nameof(healthChecksSettings)); _serverMessenger = serverMessenger; _requestAccessor = requestAccessor; _backofficeSecurityFactory = backofficeSecurityFactory; @@ -98,7 +90,6 @@ namespace Umbraco.Web.Scheduling _publishingRunner = new BackgroundTaskRunner("ScheduledPublishing", logger, _applicationShutdownRegistry); _scrubberRunner = new BackgroundTaskRunner("LogScrubber", logger, _applicationShutdownRegistry); _fileCleanupRunner = new BackgroundTaskRunner("TempFileCleanup", logger, _applicationShutdownRegistry); - _healthCheckRunner = new BackgroundTaskRunner("HealthCheckNotifier", logger, _applicationShutdownRegistry); // we will start the whole process when a successful request is made _requestAccessor.RouteAttempt += RegisterBackgroundTasksOnce; @@ -138,10 +129,6 @@ namespace Umbraco.Web.Scheduling tasks.Add(RegisterLogScrubber(_loggingSettings)); tasks.Add(RegisterTempFileCleanup()); - var healthCheckConfig = _healthChecksSettings; - if (healthCheckConfig.NotificationSettings.Enabled) - tasks.Add(RegisterHealthCheckNotifier(healthCheckConfig, _healthChecks, _notifications, _profilingLogger)); - return tasks.ToArray(); }); } @@ -164,32 +151,6 @@ namespace Umbraco.Web.Scheduling return task; } - private IBackgroundTask RegisterHealthCheckNotifier(HealthChecksSettings healthCheckSettingsConfig, - HealthCheckCollection healthChecks, HealthCheckNotificationMethodCollection notifications, - IProfilingLogger logger) - { - // If first run time not set, start with just small delay after application start - int delayInMilliseconds; - if (string.IsNullOrEmpty(healthCheckSettingsConfig.NotificationSettings.FirstRunTime)) - { - delayInMilliseconds = DefaultDelayMilliseconds; - } - else - { - // Otherwise start at scheduled time - delayInMilliseconds = DateTime.Now.PeriodicMinutesFrom(healthCheckSettingsConfig.NotificationSettings.FirstRunTime) * 60 * 1000; - if (delayInMilliseconds < DefaultDelayMilliseconds) - { - delayInMilliseconds = DefaultDelayMilliseconds; - } - } - - var periodInMilliseconds = healthCheckSettingsConfig.NotificationSettings.PeriodInHours * 60 * 60 * 1000; - var task = new HealthCheckNotifier(_healthCheckRunner, delayInMilliseconds, periodInMilliseconds, healthChecks, notifications, _mainDom, logger, _loggerFactory.CreateLogger(), _healthChecksSettings, _serverRegistrar, _runtime, _scopeProvider); - _healthCheckRunner.TryAdd(task); - return task; - } - private IBackgroundTask RegisterLogScrubber(LoggingSettings settings) { // log scrubbing diff --git a/src/Umbraco.Infrastructure/Users/EmailSender.cs b/src/Umbraco.Infrastructure/Users/EmailSender.cs index a58426d82f..6218ae66c7 100644 --- a/src/Umbraco.Infrastructure/Users/EmailSender.cs +++ b/src/Umbraco.Infrastructure/Users/EmailSender.cs @@ -1,6 +1,7 @@ using System; using System.Net.Mail; using System.Threading.Tasks; +using MailKit.Security; using Microsoft.Extensions.Options; using MimeKit; using MimeKit.Text; @@ -45,15 +46,15 @@ namespace Umbraco.Core { OnSendEmail(new SendEmailEventArgs(message)); } - else + else if (_smtpConfigured.Value == true) { using (var client = new SmtpClient()) { + client.Connect(_globalSettings.Smtp.Host, + _globalSettings.Smtp.Port, + (MailKit.Security.SecureSocketOptions)(int)_globalSettings.Smtp.SecureSocketOptions); - client.Connect(_globalSettings.Smtp.Host, _globalSettings.Smtp.Port); - - if (!(_globalSettings.Smtp.Username is null && - _globalSettings.Smtp.Password is null)) + if (!(_globalSettings.Smtp.Username is null && _globalSettings.Smtp.Password is null)) { client.Authenticate(_globalSettings.Smtp.Username, _globalSettings.Smtp.Password); } @@ -75,14 +76,15 @@ namespace Umbraco.Core { OnSendEmail(new SendEmailEventArgs(message)); } - else + else if (_smtpConfigured.Value == true) { using (var client = new SmtpClient()) { - await client.ConnectAsync(_globalSettings.Smtp.Host, _globalSettings.Smtp.Port); + await client.ConnectAsync(_globalSettings.Smtp.Host, + _globalSettings.Smtp.Port, + (MailKit.Security.SecureSocketOptions)(int)_globalSettings.Smtp.SecureSocketOptions); - if (!(_globalSettings.Smtp.Username is null && - _globalSettings.Smtp.Password is null)) + if (!(_globalSettings.Smtp.Username is null && _globalSettings.Smtp.Password is null)) { await client.AuthenticateAsync(_globalSettings.Smtp.Username, _globalSettings.Smtp.Password); } @@ -125,8 +127,7 @@ namespace Umbraco.Core private static void OnSendEmail(SendEmailEventArgs e) { - var handler = SendEmail; - if (handler != null) handler(null, e); + SendEmail?.Invoke(null, e); } private MimeMessage ConstructEmailMessage(EmailMessage mailMessage) @@ -138,10 +139,10 @@ namespace Umbraco.Core var messageToSend = new MimeMessage { Subject = mailMessage.Subject, - From = { new MailboxAddress(fromEmail)}, + From = { MailboxAddress.Parse(fromEmail) }, Body = new TextPart(mailMessage.IsBodyHtml ? TextFormat.Html : TextFormat.Plain) { Text = mailMessage.Body } }; - messageToSend.To.Add(new MailboxAddress(mailMessage.To)); + messageToSend.To.Add(MailboxAddress.Parse(mailMessage.To)); return messageToSend; } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensionsTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensionsTests.cs new file mode 100644 index 0000000000..3ec9af0b5a --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensionsTests.cs @@ -0,0 +1,41 @@ +using System; +using NUnit.Framework; +using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Configuration.Models.Extensions; + +namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Extensions +{ + [TestFixture] + public class HealthCheckSettingsExtensionsTests + { + [Test] + public void Returns_Notification_Delay_From_Provided_Time() + { + var settings = new HealthChecksSettings + { + Notification = new HealthChecksNotificationSettings + { + FirstRunTime = "1230", + } + }; + var now = DateTime.Now.Date.AddHours(12); + var result = settings.GetNotificationDelay(now, TimeSpan.Zero); + Assert.AreEqual(30, result.Minutes); + } + + [Test] + public void Returns_Notification_Delay_From_Default_When_Provided_Time_Too_Close_To_Current_Time() + { + var settings = new HealthChecksSettings + { + Notification = new HealthChecksNotificationSettings + { + FirstRunTime = "1230", + } + }; + var now = DateTime.Now.Date.AddHours(12).AddMinutes(25); + var result = settings.GetNotificationDelay(now, TimeSpan.FromMinutes(10)); + Assert.AreEqual(10, result.Minutes); + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidatorTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidatorTests.cs index c90e4e4c7d..31f6f5e31c 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidatorTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/ContentSettingsValidatorTests.cs @@ -1,7 +1,6 @@ using NUnit.Framework; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Configuration.Models.Validation; -using Umbraco.Tests.Common.Builders; namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation { diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidatorTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidatorTests.cs new file mode 100644 index 0000000000..e6ca06a34b --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidatorTests.cs @@ -0,0 +1,42 @@ +using System; +using NUnit.Framework; +using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Configuration.Models.Validation; + +namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation +{ + [TestFixture] + public class HealthChecksSettingsValidationTests + { + [Test] + public void Returns_Success_ForValid_Configuration() + { + var validator = new HealthChecksSettingsValidator(); + var options = BuildHealthChecksSettings(); + var result = validator.Validate("settings", options); + Assert.True(result.Succeeded); + } + + [Test] + public void Returns_Fail_For_Configuration_With_Invalid_Notification_FirstRunTime() + { + var validator = new HealthChecksSettingsValidator(); + var options = BuildHealthChecksSettings(firstRunTime: "25:00"); + var result = validator.Validate("settings", options); + Assert.False(result.Succeeded); + } + + private static HealthChecksSettings BuildHealthChecksSettings(string firstRunTime = "12:00") + { + return new HealthChecksSettings + { + Notification = new HealthChecksNotificationSettings + { + Enabled = true, + FirstRunTime = firstRunTime, + Period = TimeSpan.FromHours(1), + } + }; + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/ShortStringHelper/StringExtensionsTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/ShortStringHelper/StringExtensionsTests.cs index b3244f9884..1644b9049e 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/ShortStringHelper/StringExtensionsTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/ShortStringHelper/StringExtensionsTests.cs @@ -293,14 +293,23 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.ShortStringHelper Assert.AreEqual(expected, output); } - #region Cases [TestCase("val$id!ate|this|str'ing", "$!'", '-', "val-id-ate|this|str-ing")] [TestCase("val$id!ate|this|str'ing", "$!'", '*', "val*id*ate|this|str*ing")] - #endregion public void ReplaceManyByOneChar(string input, string toReplace, char replacement, string expected) { var output = input.ReplaceMany(toReplace.ToArray(), replacement); Assert.AreEqual(expected, output); } + + [TestCase("", false)] + [TestCase("12:34", true)] + [TestCase("1:14:23", true)] + [TestCase("25:03", false)] + [TestCase("18:61", false)] + public void IsValidTimeSpan(string input, bool expected) + { + var result = input.IsValidTimeSpan(); + Assert.AreEqual(expected, result); + } } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs new file mode 100644 index 0000000000..6506c227fc --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs @@ -0,0 +1,174 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Moq; +using NUnit.Framework; +using Umbraco.Core; +using Umbraco.Core.Configuration.Models; +using Umbraco.Core.HealthCheck; +using Umbraco.Core.Logging; +using Umbraco.Core.Scoping; +using Umbraco.Core.Sync; +using Umbraco.Infrastructure.HealthCheck; +using Umbraco.Infrastructure.HostedServices; +using Umbraco.Web.HealthCheck; +using Umbraco.Web.HealthCheck.NotificationMethods; + +namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices +{ + [TestFixture] + public class HealthCheckNotifierTests + { + private Mock _mockNotificationMethod; + + private const string Check1Id = "00000000-0000-0000-0000-000000000001"; + private const string Check2Id = "00000000-0000-0000-0000-000000000002"; + private const string Check3Id = "00000000-0000-0000-0000-000000000003"; + + [Test] + public void Does_Not_Execute_When_Not_Enabled() + { + var sut = CreateHealthCheckNotifier(enabled: false); + sut.ExecuteAsync(null); + _mockNotificationMethod.Verify(x => x.SendAsync(It.IsAny()), Times.Never); + } + + [Test] + public void Does_Not_Execute_When_Runtime_State_Is_Not_Run() + { + var sut = CreateHealthCheckNotifier(runtimeLevel: RuntimeLevel.Boot); + sut.ExecuteAsync(null); + _mockNotificationMethod.Verify(x => x.SendAsync(It.IsAny()), Times.Never); + } + + [Test] + public void Does_Not_Execute_When_Server_Role_Is_Replica() + { + var sut = CreateHealthCheckNotifier(serverRole: ServerRole.Replica); + sut.ExecuteAsync(null); + _mockNotificationMethod.Verify(x => x.SendAsync(It.IsAny()), Times.Never); + } + + [Test] + public void Does_Not_Execute_When_Server_Role_Is_Unknown() + { + var sut = CreateHealthCheckNotifier(serverRole: ServerRole.Unknown); + sut.ExecuteAsync(null); + _mockNotificationMethod.Verify(x => x.SendAsync(It.IsAny()), Times.Never); + } + + [Test] + public void Does_Not_Execute_When_Not_Main_Dom() + { + var sut = CreateHealthCheckNotifier(isMainDom: false); + sut.ExecuteAsync(null); + _mockNotificationMethod.Verify(x => x.SendAsync(It.IsAny()), Times.Never); + } + + [Test] + public void Does_Not_Execute_With_No_Enabled_Notification_Methods() + { + var sut = CreateHealthCheckNotifier(notificationEnabled: false); + sut.ExecuteAsync(null); + _mockNotificationMethod.Verify(x => x.SendAsync(It.IsAny()), Times.Never); + } + + [Test] + public void Executes_With_Enabled_Notification_Methods() + { + var sut = CreateHealthCheckNotifier(); + sut.ExecuteAsync(null); + _mockNotificationMethod.Verify(x => x.SendAsync(It.IsAny()), Times.Once); + } + + [Test] + public void Executes_Only_Enabled_Checks() + { + var sut = CreateHealthCheckNotifier(); + sut.ExecuteAsync(null); + _mockNotificationMethod.Verify(x => x.SendAsync(It.Is( + y => y.ResultsAsDictionary.Count == 1 && y.ResultsAsDictionary.ContainsKey("Check1"))), Times.Once); + } + + private HealthCheckNotifier CreateHealthCheckNotifier( + bool enabled = true, + RuntimeLevel runtimeLevel = RuntimeLevel.Run, + ServerRole serverRole = ServerRole.Single, + bool isMainDom = true, + bool notificationEnabled = true) + { + var settings = new HealthChecksSettings + { + Notification = new HealthChecksNotificationSettings + { + Enabled = enabled, + DisabledChecks = new List + { + new DisabledHealthCheckSettings { Id = Guid.Parse(Check3Id) } + } + }, + DisabledChecks = new List + { + new DisabledHealthCheckSettings { Id = Guid.Parse(Check2Id) } + } + }; + var checks = new HealthCheckCollection(new List + { + new TestHealthCheck1(), + new TestHealthCheck2(), + new TestHealthCheck3(), + }); + + _mockNotificationMethod = new Mock(); + _mockNotificationMethod.SetupGet(x => x.Enabled).Returns(notificationEnabled); + var notifications = new HealthCheckNotificationMethodCollection(new List { _mockNotificationMethod.Object }); + + var mockRunTimeState = new Mock(); + mockRunTimeState.SetupGet(x => x.Level).Returns(runtimeLevel); + + var mockServerRegistrar = new Mock(); + mockServerRegistrar.Setup(x => x.GetCurrentServerRole()).Returns(serverRole); + + var mockMainDom = new Mock(); + mockMainDom.SetupGet(x => x.IsMainDom).Returns(isMainDom); + + var mockScopeProvider = new Mock(); + var mockLogger = new Mock>(); + var mockProfilingLogger = new Mock(); + + return new HealthCheckNotifier(Options.Create(settings), checks, notifications, + mockRunTimeState.Object, mockServerRegistrar.Object, mockMainDom.Object, mockScopeProvider.Object, + mockLogger.Object, mockProfilingLogger.Object); + } + + [HealthCheck(Check1Id, "Check1")] + private class TestHealthCheck1 : TestHealthCheck + { + } + + [HealthCheck(Check2Id, "Check2")] + private class TestHealthCheck2 : TestHealthCheck + { + } + + [HealthCheck(Check3Id, "Check3")] + private class TestHealthCheck3 : TestHealthCheck + { + } + + private class TestHealthCheck : HealthCheck + { + public override HealthCheckStatus ExecuteAction(HealthCheckAction action) + { + return new HealthCheckStatus("Check message"); + } + + public override IEnumerable GetStatus() + { + return Enumerable.Empty(); + } + } + } +} diff --git a/src/Umbraco.Web.BackOffice/Extensions/UmbracoBuilderExtensions.cs b/src/Umbraco.Web.BackOffice/Extensions/UmbracoBuilderExtensions.cs index 6a6a896bae..649b8b76b7 100644 --- a/src/Umbraco.Web.BackOffice/Extensions/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Web.BackOffice/Extensions/UmbracoBuilderExtensions.cs @@ -16,7 +16,8 @@ namespace Umbraco.Extensions .WithMiniProfiler() .WithMvcAndRazor() .WithWebServer() - .WithPreview(); + .WithPreview() + .WithHostedServices(); } public static IUmbracoBuilder WithBackOffice(this IUmbracoBuilder builder) diff --git a/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs b/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs index 1d13c4c712..2ac4130fe4 100644 --- a/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs @@ -33,6 +33,9 @@ namespace Umbraco.Web.Common.Builder public static IUmbracoBuilder WithCore(this IUmbracoBuilder builder) => builder.AddWith(nameof(WithCore), () => builder.Services.AddUmbracoCore(builder.WebHostEnvironment, builder.Config)); + public static IUmbracoBuilder WithHostedServices(this IUmbracoBuilder builder) + => builder.AddWith(nameof(WithHostedServices), () => builder.Services.AddUmbracoHostedServices()); + public static IUmbracoBuilder WithMiniProfiler(this IUmbracoBuilder builder) => builder.AddWith(nameof(WithMiniProfiler), () => builder.Services.AddMiniProfiler(options => diff --git a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs index 1a157a74be..704a7ce066 100644 --- a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs @@ -12,8 +12,6 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Serilog; using Serilog.Extensions.Hosting; -using Serilog.Extensions.Logging; -using Umbraco.Composing; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; @@ -26,97 +24,17 @@ using Umbraco.Core.Logging.Serilog; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Runtime; +using Umbraco.Infrastructure.HostedServices; using Umbraco.Web.Common.AspNetCore; using Umbraco.Web.Common.Profiler; using ConnectionStrings = Umbraco.Core.Configuration.Models.ConnectionStrings; using CoreDebugSettings = Umbraco.Core.Configuration.Models.CoreDebugSettings; using IHostingEnvironment = Umbraco.Core.Hosting.IHostingEnvironment; -using ILogger = Microsoft.Extensions.Logging.ILogger; namespace Umbraco.Extensions { public static class UmbracoCoreServiceCollectionExtensions { - /// - /// Adds SqlCe support for Umbraco - /// - /// - /// - public static IServiceCollection AddUmbracoSqlCeSupport(this IServiceCollection services) - { - try - { - var binFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); - if (binFolder != null) - { - var dllPath = Path.Combine(binFolder, "Umbraco.Persistance.SqlCe.dll"); - var umbSqlCeAssembly = Assembly.LoadFrom(dllPath); - - var sqlCeSyntaxProviderType = umbSqlCeAssembly.GetType("Umbraco.Persistance.SqlCe.SqlCeSyntaxProvider"); - var sqlCeBulkSqlInsertProviderType = umbSqlCeAssembly.GetType("Umbraco.Persistance.SqlCe.SqlCeBulkSqlInsertProvider"); - var sqlCeEmbeddedDatabaseCreatorType = umbSqlCeAssembly.GetType("Umbraco.Persistance.SqlCe.SqlCeEmbeddedDatabaseCreator"); - - if (!(sqlCeSyntaxProviderType is null || sqlCeBulkSqlInsertProviderType is null || sqlCeEmbeddedDatabaseCreatorType is null)) - { - services.AddSingleton(typeof(ISqlSyntaxProvider), sqlCeSyntaxProviderType); - services.AddSingleton(typeof(IBulkSqlInsertProvider), sqlCeBulkSqlInsertProviderType); - services.AddSingleton(typeof(IEmbeddedDatabaseCreator), sqlCeEmbeddedDatabaseCreatorType); - } - - var sqlCeAssembly = Assembly.LoadFrom(Path.Combine(binFolder, "System.Data.SqlServerCe.dll")); - - var sqlCe = sqlCeAssembly.GetType("System.Data.SqlServerCe.SqlCeProviderFactory"); - if (!(sqlCe is null)) - { - DbProviderFactories.RegisterFactory(Core.Constants.DbProviderNames.SqlCe, sqlCe); - } - } - } - catch - { - // Ignore if SqlCE is not available - } - - return services; - } - - /// - /// Adds Sql Server support for Umbraco - /// - /// - /// - public static IServiceCollection AddUmbracoSqlServerSupport(this IServiceCollection services) - { - DbProviderFactories.RegisterFactory(Core.Constants.DbProviderNames.SqlServer, SqlClientFactory.Instance); - - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - - return services; - } - - /// - /// Adds the Umbraco Back Core requirements - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - public static IServiceCollection AddUmbracoCore(this IServiceCollection services, - IWebHostEnvironment webHostEnvironment, - Assembly entryAssembly, - AppCaches appCaches, - ILoggingConfiguration loggingConfiguration, - IConfiguration configuration) - => services.AddUmbracoCore(webHostEnvironment, entryAssembly, appCaches, loggingConfiguration, configuration, GetCoreRuntime); - /// /// Adds the Umbraco Configuration requirements /// @@ -127,10 +45,13 @@ namespace Umbraco.Extensions { if (configuration == null) throw new ArgumentNullException(nameof(configuration)); + // Register configuration validators. services.AddSingleton, ContentSettingsValidator>(); services.AddSingleton, GlobalSettingsValidator>(); + services.AddSingleton, HealthChecksSettingsValidator >(); services.AddSingleton, RequestHandlerSettingsValidator>(); + // Register configuration sections. services.Configure(configuration.GetSection(Constants.Configuration.ConfigActiveDirectory)); services.Configure(configuration.GetSection("ConnectionStrings"), o => o.BindNonPublicProperties = true); services.Configure(configuration.GetSection(Constants.Configuration.ConfigContent)); @@ -157,6 +78,27 @@ namespace Umbraco.Extensions return services; } + /// + /// Adds the Umbraco Back Core requirements + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + public static IServiceCollection AddUmbracoCore(this IServiceCollection services, + IWebHostEnvironment webHostEnvironment, + Assembly entryAssembly, + AppCaches appCaches, + ILoggingConfiguration loggingConfiguration, + IConfiguration configuration) + => services.AddUmbracoCore(webHostEnvironment, entryAssembly, appCaches, loggingConfiguration, configuration, GetCoreRuntime); + /// /// Adds the Umbraco Back Core requirements /// @@ -284,6 +226,77 @@ namespace Umbraco.Extensions return services; } + /// + /// Adds SqlCe support for Umbraco + /// + /// + /// + private static IServiceCollection AddUmbracoSqlCeSupport(this IServiceCollection services) + { + try + { + var binFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + if (binFolder != null) + { + var dllPath = Path.Combine(binFolder, "Umbraco.Persistance.SqlCe.dll"); + var umbSqlCeAssembly = Assembly.LoadFrom(dllPath); + + var sqlCeSyntaxProviderType = umbSqlCeAssembly.GetType("Umbraco.Persistance.SqlCe.SqlCeSyntaxProvider"); + var sqlCeBulkSqlInsertProviderType = umbSqlCeAssembly.GetType("Umbraco.Persistance.SqlCe.SqlCeBulkSqlInsertProvider"); + var sqlCeEmbeddedDatabaseCreatorType = umbSqlCeAssembly.GetType("Umbraco.Persistance.SqlCe.SqlCeEmbeddedDatabaseCreator"); + + if (!(sqlCeSyntaxProviderType is null || sqlCeBulkSqlInsertProviderType is null || sqlCeEmbeddedDatabaseCreatorType is null)) + { + services.AddSingleton(typeof(ISqlSyntaxProvider), sqlCeSyntaxProviderType); + services.AddSingleton(typeof(IBulkSqlInsertProvider), sqlCeBulkSqlInsertProviderType); + services.AddSingleton(typeof(IEmbeddedDatabaseCreator), sqlCeEmbeddedDatabaseCreatorType); + } + + var sqlCeAssembly = Assembly.LoadFrom(Path.Combine(binFolder, "System.Data.SqlServerCe.dll")); + + var sqlCe = sqlCeAssembly.GetType("System.Data.SqlServerCe.SqlCeProviderFactory"); + if (!(sqlCe is null)) + { + DbProviderFactories.RegisterFactory(Core.Constants.DbProviderNames.SqlCe, sqlCe); + } + } + } + catch + { + // Ignore if SqlCE is not available + } + + return services; + } + + /// + /// Adds Sql Server support for Umbraco + /// + /// + /// + public static IServiceCollection AddUmbracoSqlServerSupport(this IServiceCollection services) + { + DbProviderFactories.RegisterFactory(Core.Constants.DbProviderNames.SqlServer, SqlClientFactory.Instance); + + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + + return services; + } + + /// + /// Adds hosted services for Umbraco. + /// + /// + /// + public static IServiceCollection AddUmbracoHostedServices(this IServiceCollection services) + { + services.AddHostedService(); + + return services; + } + private static ITypeFinder CreateTypeFinder(ILoggerFactory loggerFactory, IProfiler profiler, IWebHostEnvironment webHostEnvironment, Assembly entryAssembly, IOptionsMonitor typeFinderSettings) { var runtimeHashPaths = new RuntimeHashPaths(); @@ -355,7 +368,7 @@ namespace Umbraco.Extensions /// private static void AddLogger( IServiceCollection services, - Core.Hosting.IHostingEnvironment hostingEnvironment, + IHostingEnvironment hostingEnvironment, ILoggingConfiguration loggingConfiguration, IConfiguration configuration) { From 6a30cd3158cdc46ec2aed034e463894f3c51e77b Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Fri, 30 Oct 2020 14:08:05 +0100 Subject: [PATCH 24/56] Changed the test from using IsoCode to IsMandatory, as this is not important to the test, but changing IsoCode leads PublishedSnapshotService to rebuild its caches Signed-off-by: Bjarke Berg --- .../Scoping/ScopedRepositoryTests.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopedRepositoryTests.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopedRepositoryTests.cs index 6dd0d58a75..2976aca085 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopedRepositoryTests.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Scoping/ScopedRepositoryTests.cs @@ -127,7 +127,6 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Scoping Assert.AreEqual(complete ? "changed" : "name", globalCached.Name); } - [Explicit("Current having issues if RuntimeTests.cs is running in same session")] [TestCase(true)] [TestCase(false)] public void FullDataSetRepositoryCachePolicy(bool complete) @@ -166,7 +165,8 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Scoping var scopedCache = scope.IsolatedCaches.GetOrCreate(typeof (ILanguage)); Assert.AreNotSame(globalCache, scopedCache); - lang.IsoCode = "de-DE"; + //Use IsMandatory of isocode to ensure publishedContent cache is not also rebuild + lang.IsMandatory = true; service.Save(lang); // scoped cache has been flushed, reload @@ -180,7 +180,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Scoping var scopeCached = scopeFullCached.First(x => x.Id == lang.Id); Assert.IsNotNull(scopeCached); Assert.AreEqual(lang.Id, scopeCached.Id); - Assert.AreEqual("de-DE", scopeCached.IsoCode); + Assert.AreEqual(true, scopeCached.IsMandatory); // global cache is unchanged globalFullCached = (IEnumerable) globalCache.Get(GetCacheTypeKey(), () => null); @@ -188,7 +188,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Scoping globalCached = globalFullCached.First(x => x.Id == lang.Id); Assert.IsNotNull(globalCached); Assert.AreEqual(lang.Id, globalCached.Id); - Assert.AreEqual("fr-FR", globalCached.IsoCode); + Assert.AreEqual(false, globalCached.IsMandatory); if (complete) scope.Complete(); @@ -209,7 +209,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Scoping // get again, updated if completed lang = service.GetLanguageById(lang.Id); - Assert.AreEqual(complete ? "de-DE" : "fr-FR", lang.IsoCode); + Assert.AreEqual(complete ? true : false, lang.IsMandatory); // global cache contains the entity again globalFullCached = (IEnumerable) globalCache.Get(GetCacheTypeKey(), () => null); @@ -217,7 +217,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Scoping globalCached = globalFullCached.First(x => x.Id == lang.Id); Assert.IsNotNull(globalCached); Assert.AreEqual(lang.Id, globalCached.Id); - Assert.AreEqual(complete ? "de-DE" : "fr-FR", lang.IsoCode); + Assert.AreEqual(complete ? true : false, lang.IsMandatory); } [TestCase(true)] From 9cb59239d13c29918c702826719857a72b1e5b0e Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Fri, 30 Oct 2020 17:19:01 +0100 Subject: [PATCH 25/56] Migrated KeepAlive recurring task to hosted service. --- .../Configuration/Models/KeepAliveSettings.cs | 2 +- .../HostedServices}/KeepAlive.cs | 50 +++---- .../Scheduling/SchedulerComponent.cs | 23 +--- .../Umbraco.Infrastructure.csproj | 3 +- .../HealthCheckNotifierTests.cs | 45 ++++--- .../HostedServices/KeepAliveTests.cs | 124 ++++++++++++++++++ .../Extensions/UmbracoBuilderExtensions.cs | 3 +- .../Builder/UmbracoBuilderExtensions.cs | 3 + .../UmbracoCoreServiceCollectionExtensions.cs | 11 ++ 9 files changed, 199 insertions(+), 65 deletions(-) rename src/{Umbraco.Core/Scheduling => Umbraco.Infrastructure/HostedServices}/KeepAlive.cs (66%) create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/KeepAliveTests.cs diff --git a/src/Umbraco.Core/Configuration/Models/KeepAliveSettings.cs b/src/Umbraco.Core/Configuration/Models/KeepAliveSettings.cs index 01d3b36a5d..2c53407398 100644 --- a/src/Umbraco.Core/Configuration/Models/KeepAliveSettings.cs +++ b/src/Umbraco.Core/Configuration/Models/KeepAliveSettings.cs @@ -2,7 +2,7 @@ namespace Umbraco.Core.Configuration.Models { public class KeepAliveSettings { - public bool DisableKeepAliveTask => false; + public bool DisableKeepAliveTask { get; set; } = false; public string KeepAlivePingUrl => "{umbracoApplicationUrl}/api/keepalive/ping"; } diff --git a/src/Umbraco.Core/Scheduling/KeepAlive.cs b/src/Umbraco.Infrastructure/HostedServices/KeepAlive.cs similarity index 66% rename from src/Umbraco.Core/Scheduling/KeepAlive.cs rename to src/Umbraco.Infrastructure/HostedServices/KeepAlive.cs index 9b09a81cc3..337890c799 100644 --- a/src/Umbraco.Core/Scheduling/KeepAlive.cs +++ b/src/Umbraco.Infrastructure/HostedServices/KeepAlive.cs @@ -1,17 +1,19 @@ using System; using System.Net.Http; -using System.Threading; -using System.Threading.Tasks; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Logging; using Umbraco.Core.Sync; -using Microsoft.Extensions.Logging; +using Umbraco.Web; -namespace Umbraco.Web.Scheduling +namespace Umbraco.Infrastructure.HostedServices { - public class KeepAlive : RecurringTaskBase + /// + /// Hosted service implementation for keep alive feature. + /// + public class KeepAlive : RecurringHostedServiceBase { private readonly IRequestAccessor _requestAccessor; private readonly IMainDom _mainDom; @@ -19,11 +21,10 @@ namespace Umbraco.Web.Scheduling private readonly ILogger _logger; private readonly IProfilingLogger _profilingLogger; private readonly IServerRegistrar _serverRegistrar; - private static HttpClient _httpClient; + private readonly IHttpClientFactory _httpClientFactory; - public KeepAlive(IBackgroundTaskRunner runner, int delayMilliseconds, int periodMilliseconds, - IRequestAccessor requestAccessor, IMainDom mainDom, IOptions keepAliveSettings, ILogger logger, IProfilingLogger profilingLogger, IServerRegistrar serverRegistrar) - : base(runner, delayMilliseconds, periodMilliseconds) + public KeepAlive(IRequestAccessor requestAccessor, IMainDom mainDom, IOptions keepAliveSettings, ILogger logger, IProfilingLogger profilingLogger, IServerRegistrar serverRegistrar, IHttpClientFactory httpClientFactory) + : base(TimeSpan.FromMinutes(5), DefaultDelay) { _requestAccessor = requestAccessor; _mainDom = mainDom; @@ -31,30 +32,32 @@ namespace Umbraco.Web.Scheduling _logger = logger; _profilingLogger = profilingLogger; _serverRegistrar = serverRegistrar; - if (_httpClient == null) - { - _httpClient = new HttpClient(); - } + _httpClientFactory = httpClientFactory; } - public override async Task PerformRunAsync(CancellationToken token) + public override async void ExecuteAsync(object state) { - // not on replicas nor unknown role servers + if (_keepAliveSettings.DisableKeepAliveTask) + { + return; + } + + // Don't run on replicas nor unknown role servers switch (_serverRegistrar.GetCurrentServerRole()) { case ServerRole.Replica: _logger.LogDebug("Does not run on replica servers."); - return true; // role may change! + return; case ServerRole.Unknown: _logger.LogDebug("Does not run on servers with unknown role."); - return true; // role may change! + return; } - // ensure we do not run if not main domain, but do NOT lock it + // Ensure we do not run if not main domain, but do NOT lock it if (_mainDom.IsMainDom == false) { _logger.LogDebug("Does not run if not MainDom."); - return false; // do NOT repeat, going down + return; } using (_profilingLogger.DebugDuration("Keep alive executing", "Keep alive complete")) @@ -68,24 +71,21 @@ namespace Umbraco.Web.Scheduling if (umbracoAppUrl.IsNullOrWhiteSpace()) { _logger.LogWarning("No umbracoApplicationUrl for service (yet), skip."); - return true; // repeat + return; } keepAlivePingUrl = keepAlivePingUrl.Replace("{umbracoApplicationUrl}", umbracoAppUrl.TrimEnd('/')); } var request = new HttpRequestMessage(HttpMethod.Get, keepAlivePingUrl); - var result = await _httpClient.SendAsync(request, token); + var httpClient = _httpClientFactory.CreateClient(); + await httpClient.SendAsync(request); } catch (Exception ex) { _logger.LogError(ex, "Keep alive failed (at '{keepAlivePingUrl}').", keepAlivePingUrl); } } - - return true; // repeat } - - public override bool IsAsync => true; } } diff --git a/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs b/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs index 49999c9c56..af7ca33256 100644 --- a/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs +++ b/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs @@ -8,13 +8,11 @@ using Microsoft.Extensions.Options; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.HealthCheck; using Umbraco.Core.Hosting; using Umbraco.Core.Logging; using Umbraco.Core.Scoping; using Umbraco.Core.Services; using Umbraco.Core.Sync; -using Umbraco.Web.HealthCheck; using Umbraco.Web.Routing; namespace Umbraco.Web.Scheduling @@ -41,14 +39,11 @@ namespace Umbraco.Web.Scheduling private readonly IRequestAccessor _requestAccessor; private readonly IBackofficeSecurityFactory _backofficeSecurityFactory; private readonly LoggingSettings _loggingSettings; - private readonly KeepAliveSettings _keepAliveSettings; private readonly IHostingEnvironment _hostingEnvironment; - private BackgroundTaskRunner _keepAliveRunner; private BackgroundTaskRunner _publishingRunner; private BackgroundTaskRunner _scrubberRunner; private BackgroundTaskRunner _fileCleanupRunner; - private BackgroundTaskRunner _healthCheckRunner; private bool _started; private object _locker = new object(); @@ -59,7 +54,7 @@ namespace Umbraco.Web.Scheduling IScopeProvider scopeProvider, IUmbracoContextFactory umbracoContextFactory, IProfilingLogger profilingLogger, ILoggerFactory loggerFactory, IApplicationShutdownRegistry applicationShutdownRegistry, IServerMessenger serverMessenger, IRequestAccessor requestAccessor, - IOptions loggingSettings, IOptions keepAliveSettings, + IOptions loggingSettings, IHostingEnvironment hostingEnvironment, IBackofficeSecurityFactory backofficeSecurityFactory) { @@ -78,7 +73,6 @@ namespace Umbraco.Web.Scheduling _requestAccessor = requestAccessor; _backofficeSecurityFactory = backofficeSecurityFactory; _loggingSettings = loggingSettings.Value; - _keepAliveSettings = keepAliveSettings.Value; _hostingEnvironment = hostingEnvironment; } @@ -86,7 +80,6 @@ namespace Umbraco.Web.Scheduling { var logger = _loggerFactory.CreateLogger>(); // backgrounds runners are web aware, if the app domain dies, these tasks will wind down correctly - _keepAliveRunner = new BackgroundTaskRunner("KeepAlive", logger, _applicationShutdownRegistry); _publishingRunner = new BackgroundTaskRunner("ScheduledPublishing", logger, _applicationShutdownRegistry); _scrubberRunner = new BackgroundTaskRunner("LogScrubber", logger, _applicationShutdownRegistry); _fileCleanupRunner = new BackgroundTaskRunner("TempFileCleanup", logger, _applicationShutdownRegistry); @@ -120,11 +113,6 @@ namespace Umbraco.Web.Scheduling var tasks = new List(); - if (_keepAliveSettings.DisableKeepAliveTask == false) - { - tasks.Add(RegisterKeepAlive(_keepAliveSettings)); - } - tasks.Add(RegisterScheduledPublishing()); tasks.Add(RegisterLogScrubber(_loggingSettings)); tasks.Add(RegisterTempFileCleanup()); @@ -133,15 +121,6 @@ namespace Umbraco.Web.Scheduling }); } - private IBackgroundTask RegisterKeepAlive(KeepAliveSettings keepAliveSettings) - { - // ping/keepalive - // on all servers - var task = new KeepAlive(_keepAliveRunner, DefaultDelayMilliseconds, FiveMinuteMilliseconds, _requestAccessor, _mainDom, Options.Create(keepAliveSettings), _loggerFactory.CreateLogger(), _profilingLogger, _serverRegistrar); - _keepAliveRunner.TryAdd(task); - return task; - } - private IBackgroundTask RegisterScheduledPublishing() { // scheduled publishing/unpublishing diff --git a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj index 2343ea806a..54ac7817e1 100644 --- a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj +++ b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj @@ -14,9 +14,10 @@ - + + diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs index 6506c227fc..372b94d9dd 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs @@ -23,16 +23,16 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices { private Mock _mockNotificationMethod; - private const string Check1Id = "00000000-0000-0000-0000-000000000001"; - private const string Check2Id = "00000000-0000-0000-0000-000000000002"; - private const string Check3Id = "00000000-0000-0000-0000-000000000003"; + private const string _check1Id = "00000000-0000-0000-0000-000000000001"; + private const string _check2Id = "00000000-0000-0000-0000-000000000002"; + private const string _check3Id = "00000000-0000-0000-0000-000000000003"; [Test] public void Does_Not_Execute_When_Not_Enabled() { var sut = CreateHealthCheckNotifier(enabled: false); sut.ExecuteAsync(null); - _mockNotificationMethod.Verify(x => x.SendAsync(It.IsAny()), Times.Never); + VerifyNotificationsNotSent(); } [Test] @@ -40,7 +40,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices { var sut = CreateHealthCheckNotifier(runtimeLevel: RuntimeLevel.Boot); sut.ExecuteAsync(null); - _mockNotificationMethod.Verify(x => x.SendAsync(It.IsAny()), Times.Never); + VerifyNotificationsNotSent(); } [Test] @@ -48,7 +48,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices { var sut = CreateHealthCheckNotifier(serverRole: ServerRole.Replica); sut.ExecuteAsync(null); - _mockNotificationMethod.Verify(x => x.SendAsync(It.IsAny()), Times.Never); + VerifyNotificationsNotSent(); } [Test] @@ -56,7 +56,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices { var sut = CreateHealthCheckNotifier(serverRole: ServerRole.Unknown); sut.ExecuteAsync(null); - _mockNotificationMethod.Verify(x => x.SendAsync(It.IsAny()), Times.Never); + VerifyNotificationsNotSent(); } [Test] @@ -64,7 +64,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices { var sut = CreateHealthCheckNotifier(isMainDom: false); sut.ExecuteAsync(null); - _mockNotificationMethod.Verify(x => x.SendAsync(It.IsAny()), Times.Never); + VerifyNotificationsNotSent(); } [Test] @@ -72,7 +72,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices { var sut = CreateHealthCheckNotifier(notificationEnabled: false); sut.ExecuteAsync(null); - _mockNotificationMethod.Verify(x => x.SendAsync(It.IsAny()), Times.Never); + VerifyNotificationsNotSent(); } [Test] @@ -80,7 +80,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices { var sut = CreateHealthCheckNotifier(); sut.ExecuteAsync(null); - _mockNotificationMethod.Verify(x => x.SendAsync(It.IsAny()), Times.Once); + VerifyNotificationsSent(); } [Test] @@ -106,12 +106,12 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices Enabled = enabled, DisabledChecks = new List { - new DisabledHealthCheckSettings { Id = Guid.Parse(Check3Id) } + new DisabledHealthCheckSettings { Id = Guid.Parse(_check3Id) } } }, DisabledChecks = new List { - new DisabledHealthCheckSettings { Id = Guid.Parse(Check2Id) } + new DisabledHealthCheckSettings { Id = Guid.Parse(_check2Id) } } }; var checks = new HealthCheckCollection(new List @@ -143,17 +143,32 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices mockLogger.Object, mockProfilingLogger.Object); } - [HealthCheck(Check1Id, "Check1")] + private void VerifyNotificationsNotSent() + { + VerifyNotificationsSentTimes(Times.Never()); + } + + private void VerifyNotificationsSent() + { + VerifyNotificationsSentTimes(Times.Once()); + } + + private void VerifyNotificationsSentTimes(Times times) + { + _mockNotificationMethod.Verify(x => x.SendAsync(It.IsAny()), times); + } + + [HealthCheck(_check1Id, "Check1")] private class TestHealthCheck1 : TestHealthCheck { } - [HealthCheck(Check2Id, "Check2")] + [HealthCheck(_check2Id, "Check2")] private class TestHealthCheck2 : TestHealthCheck { } - [HealthCheck(Check3Id, "Check3")] + [HealthCheck(_check3Id, "Check3")] private class TestHealthCheck3 : TestHealthCheck { } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/KeepAliveTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/KeepAliveTests.cs new file mode 100644 index 0000000000..82ecffc683 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/KeepAliveTests.cs @@ -0,0 +1,124 @@ +using System; +using System.Net; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Moq; +using Moq.Protected; +using NUnit.Framework; +using Umbraco.Core; +using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Logging; +using Umbraco.Core.Scoping; +using Umbraco.Core.Sync; +using Umbraco.Infrastructure.HostedServices; +using Umbraco.Web; + +namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices +{ + [TestFixture] + public class KeepAliveTests + { + private Mock _mockHttpMessageHandler; + + private const string _applicationUrl = "https://mysite.com"; + + [Test] + public void Does_Not_Execute_When_Not_Enabled() + { + var sut = CreateKeepAlive(enabled: false); + sut.ExecuteAsync(null); + VerifyKeepAliveRequestNotSent(); + } + + [Test] + public void Does_Not_Execute_When_Server_Role_Is_Replica() + { + var sut = CreateKeepAlive(serverRole: ServerRole.Replica); + sut.ExecuteAsync(null); + VerifyKeepAliveRequestNotSent(); + } + + [Test] + public void Does_Not_Execute_When_Server_Role_Is_Unknown() + { + var sut = CreateKeepAlive(serverRole: ServerRole.Unknown); + sut.ExecuteAsync(null); + VerifyKeepAliveRequestNotSent(); + } + + [Test] + public void Does_Not_Execute_When_Not_Main_Dom() + { + var sut = CreateKeepAlive(isMainDom: false); + sut.ExecuteAsync(null); + VerifyKeepAliveRequestNotSent(); + } + + [Test] + public void Executes_And_Calls_Ping_Url() + { + var sut = CreateKeepAlive(); + sut.ExecuteAsync(null); + VerifyKeepAliveRequestSent(); + } + + private KeepAlive CreateKeepAlive( + bool enabled = true, + ServerRole serverRole = ServerRole.Single, + bool isMainDom = true) + { + var settings = new KeepAliveSettings + { + DisableKeepAliveTask = !enabled, + }; + + var mockRequestAccessor = new Mock(); + mockRequestAccessor.Setup(x => x.GetApplicationUrl()).Returns(new Uri(_applicationUrl)); + + var mockServerRegistrar = new Mock(); + mockServerRegistrar.Setup(x => x.GetCurrentServerRole()).Returns(serverRole); + + var mockMainDom = new Mock(); + mockMainDom.SetupGet(x => x.IsMainDom).Returns(isMainDom); + + var mockScopeProvider = new Mock(); + var mockLogger = new Mock>(); + var mockProfilingLogger = new Mock(); + + _mockHttpMessageHandler = new Mock(); + _mockHttpMessageHandler.Protected() + .Setup>("SendAsync", ItExpr.IsAny(), ItExpr.IsAny()) + .ReturnsAsync(new HttpResponseMessage(HttpStatusCode.OK)) + .Verifiable(); + _mockHttpMessageHandler.As().Setup(s => s.Dispose()); + var httpClient = new HttpClient(_mockHttpMessageHandler.Object); + + var mockHttpClientFactory = new Mock(MockBehavior.Strict); + mockHttpClientFactory.Setup(x => x.CreateClient(It.IsAny())).Returns(httpClient); + + return new KeepAlive(mockRequestAccessor.Object, mockMainDom.Object, Options.Create(settings), + mockLogger.Object, mockProfilingLogger.Object, mockServerRegistrar.Object, mockHttpClientFactory.Object); + } + + private void VerifyKeepAliveRequestNotSent() + { + VerifyKeepAliveRequestSentTimes(Times.Never()); + } + + private void VerifyKeepAliveRequestSent() + { + VerifyKeepAliveRequestSentTimes(Times.Once()); + } + + private void VerifyKeepAliveRequestSentTimes(Times times) + { + _mockHttpMessageHandler.Protected().Verify("SendAsync", + times, + ItExpr.Is(x => x.RequestUri.ToString() == $"{_applicationUrl}/api/keepalive/ping"), + ItExpr.IsAny()); + } + } +} diff --git a/src/Umbraco.Web.BackOffice/Extensions/UmbracoBuilderExtensions.cs b/src/Umbraco.Web.BackOffice/Extensions/UmbracoBuilderExtensions.cs index 649b8b76b7..c494425274 100644 --- a/src/Umbraco.Web.BackOffice/Extensions/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Web.BackOffice/Extensions/UmbracoBuilderExtensions.cs @@ -17,7 +17,8 @@ namespace Umbraco.Extensions .WithMvcAndRazor() .WithWebServer() .WithPreview() - .WithHostedServices(); + .WithHostedServices() + .WithHttpClients(); } public static IUmbracoBuilder WithBackOffice(this IUmbracoBuilder builder) diff --git a/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs b/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs index 2ac4130fe4..635594a77d 100644 --- a/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs @@ -36,6 +36,9 @@ namespace Umbraco.Web.Common.Builder public static IUmbracoBuilder WithHostedServices(this IUmbracoBuilder builder) => builder.AddWith(nameof(WithHostedServices), () => builder.Services.AddUmbracoHostedServices()); + public static IUmbracoBuilder WithHttpClients(this IUmbracoBuilder builder) + => builder.AddWith(nameof(WithHttpClients), () => builder.Services.AddUmbracoHttpClients()); + public static IUmbracoBuilder WithMiniProfiler(this IUmbracoBuilder builder) => builder.AddWith(nameof(WithMiniProfiler), () => builder.Services.AddMiniProfiler(options => diff --git a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs index 704a7ce066..2f82f86ba4 100644 --- a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs @@ -293,7 +293,18 @@ namespace Umbraco.Extensions public static IServiceCollection AddUmbracoHostedServices(this IServiceCollection services) { services.AddHostedService(); + services.AddHostedService(); + return services; + } + /// + /// Adds HTTP clients for Umbraco. + /// + /// + /// + public static IServiceCollection AddUmbracoHttpClients(this IServiceCollection services) + { + services.AddHttpClient(); return services; } From 98b1798bbe7ed1a15e5177bd136e6d43f877d1ab Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Fri, 30 Oct 2020 19:56:26 +0100 Subject: [PATCH 26/56] Fixes issue with introduced MSDI abstractions where a single implemention is used for two interfaces, ensuring only one singleton instance is created. --- src/Umbraco.Core/ServiceCollectionExtensions.cs | 15 +++++++++++++++ .../Runtime/AspNetCoreComposer.cs | 7 ++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Core/ServiceCollectionExtensions.cs b/src/Umbraco.Core/ServiceCollectionExtensions.cs index 3202cc3a38..e6fcd43af1 100644 --- a/src/Umbraco.Core/ServiceCollectionExtensions.cs +++ b/src/Umbraco.Core/ServiceCollectionExtensions.cs @@ -12,6 +12,21 @@ namespace Umbraco.Core where TImplementing : class, TService => services.Replace(ServiceDescriptor.Singleton()); + /// + /// Registers a unique service as a single instance implementing two interfaces. + /// + /// + /// Hat-tip: https://stackoverflow.com/a/55402016/489433 + /// + public static void AddUnique(this IServiceCollection services) + where TService1 : class + where TService2 : class + where TImplementing : class, TService1, TService2 + { + services.Replace(ServiceDescriptor.Singleton()); + services.Replace(ServiceDescriptor.Singleton(x => (TImplementing)x.GetService())); + } + public static void AddUnique(this IServiceCollection services) where TImplementing : class => services.Replace(ServiceDescriptor.Singleton()); diff --git a/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs b/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs index 39742dcb0d..832cfdb488 100644 --- a/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs +++ b/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs @@ -55,13 +55,11 @@ namespace Umbraco.Web.Common.Runtime composition.Services.AddUnique(); // The umbraco request lifetime - composition.Services.AddUnique(); - composition.Services.AddUnique(); + composition.Services.AddUnique(); - //Password hasher + // Password hasher composition.Services.AddUnique(); - composition.Services.AddUnique(); composition.Services.AddTransient(); composition.Services.AddUnique(); @@ -76,7 +74,6 @@ namespace Umbraco.Web.Common.Runtime composition.Services.AddUnique(); composition.Services.AddUnique(); - // register the umbraco context factory composition.Services.AddUnique(); composition.Services.AddUnique(); From 684185f777439f1a72267adfcc45034722828aec Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Fri, 30 Oct 2020 19:56:26 +0100 Subject: [PATCH 27/56] Fixes issue with introduced MSDI abstractions where a single implemention is used for two interfaces, ensuring only one singleton instance is created. --- src/Umbraco.Core/ServiceCollectionExtensions.cs | 15 +++++++++++++++ .../Runtime/AspNetCoreComposer.cs | 7 ++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Core/ServiceCollectionExtensions.cs b/src/Umbraco.Core/ServiceCollectionExtensions.cs index 3202cc3a38..e6fcd43af1 100644 --- a/src/Umbraco.Core/ServiceCollectionExtensions.cs +++ b/src/Umbraco.Core/ServiceCollectionExtensions.cs @@ -12,6 +12,21 @@ namespace Umbraco.Core where TImplementing : class, TService => services.Replace(ServiceDescriptor.Singleton()); + /// + /// Registers a unique service as a single instance implementing two interfaces. + /// + /// + /// Hat-tip: https://stackoverflow.com/a/55402016/489433 + /// + public static void AddUnique(this IServiceCollection services) + where TService1 : class + where TService2 : class + where TImplementing : class, TService1, TService2 + { + services.Replace(ServiceDescriptor.Singleton()); + services.Replace(ServiceDescriptor.Singleton(x => (TImplementing)x.GetService())); + } + public static void AddUnique(this IServiceCollection services) where TImplementing : class => services.Replace(ServiceDescriptor.Singleton()); diff --git a/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs b/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs index 39742dcb0d..832cfdb488 100644 --- a/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs +++ b/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs @@ -55,13 +55,11 @@ namespace Umbraco.Web.Common.Runtime composition.Services.AddUnique(); // The umbraco request lifetime - composition.Services.AddUnique(); - composition.Services.AddUnique(); + composition.Services.AddUnique(); - //Password hasher + // Password hasher composition.Services.AddUnique(); - composition.Services.AddUnique(); composition.Services.AddTransient(); composition.Services.AddUnique(); @@ -76,7 +74,6 @@ namespace Umbraco.Web.Common.Runtime composition.Services.AddUnique(); composition.Services.AddUnique(); - // register the umbraco context factory composition.Services.AddUnique(); composition.Services.AddUnique(); From 4920fba7cb7f772707220ac7bdc0e5c59123e197 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Sat, 31 Oct 2020 08:58:47 +0100 Subject: [PATCH 28/56] Migrated temp file cleanup background task to a hosted service. --- src/Umbraco.Core/IO/CleanFolderResult.cs | 45 ++++++++++ src/Umbraco.Core/IO/IIOHelper.cs | 17 ++++ src/Umbraco.Core/IO/IOHelper.cs | 55 ++++++++++++ .../Scheduling/TempFileCleanup.cs | 80 ----------------- .../HostedServices/TempFileCleanup.cs | 88 +++++++++++++++++++ .../Scheduling/SchedulerComponent.cs | 34 +------ .../HostedServices/TempFileCleanupTests.cs | 64 ++++++++++++++ .../UmbracoCoreServiceCollectionExtensions.cs | 1 + 8 files changed, 271 insertions(+), 113 deletions(-) create mode 100644 src/Umbraco.Core/IO/CleanFolderResult.cs delete mode 100644 src/Umbraco.Core/Scheduling/TempFileCleanup.cs create mode 100644 src/Umbraco.Infrastructure/HostedServices/TempFileCleanup.cs create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/TempFileCleanupTests.cs diff --git a/src/Umbraco.Core/IO/CleanFolderResult.cs b/src/Umbraco.Core/IO/CleanFolderResult.cs new file mode 100644 index 0000000000..b85705ea83 --- /dev/null +++ b/src/Umbraco.Core/IO/CleanFolderResult.cs @@ -0,0 +1,45 @@ +using System; +using System.IO; + +namespace Umbraco.Core.IO +{ + public enum CleanFolderResultStatus + { + Success, + FailedAsDoesNotExist, + FailedWithException + } + + public class CleanFolderResult + { + private CleanFolderResult() + { + } + + public CleanFolderResultStatus Status { get; set; } + + public Exception Exception { get; set; } + + public FileInfo ErroringFile { get; set; } + + public static CleanFolderResult Success() + { + return new CleanFolderResult { Status = CleanFolderResultStatus.Success }; + } + + public static CleanFolderResult FailedAsDoesNotExist() + { + return new CleanFolderResult { Status = CleanFolderResultStatus.FailedAsDoesNotExist }; + } + + public static CleanFolderResult FailedWithException(Exception exception, FileInfo erroringFile) + { + return new CleanFolderResult + { + Status = CleanFolderResultStatus.FailedWithException, + Exception = exception, + ErroringFile = erroringFile, + }; + } + } +} diff --git a/src/Umbraco.Core/IO/IIOHelper.cs b/src/Umbraco.Core/IO/IIOHelper.cs index 42ca804f44..510e45890f 100644 --- a/src/Umbraco.Core/IO/IIOHelper.cs +++ b/src/Umbraco.Core/IO/IIOHelper.cs @@ -1,4 +1,7 @@ +using System; using System.Collections.Generic; +using System.IO; +using Umbraco.Core.Hosting; namespace Umbraco.Core.IO { @@ -53,5 +56,19 @@ namespace Umbraco.Core.IO /// string GetRelativePath(string path); + /// + /// Retrieves array of temporary folders from the hosting environment. + /// + /// Array of instances. + DirectoryInfo[] GetTempFolders(); + + /// + /// Cleans contents of a folder. + /// + /// Folder to clean. + /// Age of files within folder to delete. + /// Result of operation + CleanFolderResult CleanFolder(DirectoryInfo folder, TimeSpan age); + } } diff --git a/src/Umbraco.Core/IO/IOHelper.cs b/src/Umbraco.Core/IO/IOHelper.cs index b3ca956733..260c6923ed 100644 --- a/src/Umbraco.Core/IO/IOHelper.cs +++ b/src/Umbraco.Core/IO/IOHelper.cs @@ -188,5 +188,60 @@ namespace Umbraco.Core.IO return PathUtility.EnsurePathIsApplicationRootPrefixed(path); } + /// + /// Retrieves array of temporary folders from the hosting environment. + /// + /// Array of instances. + public DirectoryInfo[] GetTempFolders() + { + var tempFolderPaths = new[] + { + _hostingEnvironment.MapPathContentRoot(Constants.SystemDirectories.TempFileUploads) + }; + + foreach (var tempFolderPath in tempFolderPaths) + { + // Ensure it exists + Directory.CreateDirectory(tempFolderPath); + } + + return tempFolderPaths.Select(x => new DirectoryInfo(x)).ToArray(); + } + + /// + /// Cleans contents of a folder. + /// + /// Folder to clean. + /// Age of files within folder to delete. + /// Result of operation + public CleanFolderResult CleanFolder(DirectoryInfo folder, TimeSpan age) + { + folder.Refresh(); // In case it's changed during runtime. + + if (!folder.Exists) + { + return CleanFolderResult.FailedAsDoesNotExist(); + } + + var files = folder.GetFiles("*.*", SearchOption.AllDirectories); + foreach (var file in files) + { + if (DateTime.UtcNow - file.LastWriteTimeUtc > age) + { + try + { + file.IsReadOnly = false; + file.Delete(); + } + catch (Exception ex) + { + return CleanFolderResult.FailedWithException(ex, file); + } + } + } + + return CleanFolderResult.Success(); + } + } } diff --git a/src/Umbraco.Core/Scheduling/TempFileCleanup.cs b/src/Umbraco.Core/Scheduling/TempFileCleanup.cs deleted file mode 100644 index 1a8ece78d1..0000000000 --- a/src/Umbraco.Core/Scheduling/TempFileCleanup.cs +++ /dev/null @@ -1,80 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using Umbraco.Core; -using Umbraco.Core.Logging; -using Microsoft.Extensions.Logging; - -namespace Umbraco.Web.Scheduling -{ - /// - /// Used to cleanup temporary file locations - /// - public class TempFileCleanup : RecurringTaskBase - { - private readonly DirectoryInfo[] _tempFolders; - private readonly TimeSpan _age; - private readonly IMainDom _mainDom; - private readonly IProfilingLogger _profilingLogger; - private readonly ILogger _logger; - - public TempFileCleanup(IBackgroundTaskRunner runner, int delayMilliseconds, int periodMilliseconds, - IEnumerable tempFolders, TimeSpan age, - IMainDom mainDom, IProfilingLogger profilingLogger, ILogger logger) - : base(runner, delayMilliseconds, periodMilliseconds) - { - //SystemDirectories.TempFileUploads - - _tempFolders = tempFolders.ToArray(); - _age = age; - _mainDom = mainDom; - _profilingLogger = profilingLogger; - _logger = logger; - } - - public override bool PerformRun() - { - // ensure we do not run if not main domain - if (_mainDom.IsMainDom == false) - { - _logger.LogDebug("Does not run if not MainDom."); - return false; // do NOT repeat, going down - } - - foreach (var dir in _tempFolders) - CleanupFolder(dir); - - return true; //repeat - } - - private void CleanupFolder(DirectoryInfo dir) - { - dir.Refresh(); //in case it's changed during runtime - if (!dir.Exists) - { - _logger.LogDebug("The cleanup folder doesn't exist {Folder}", dir.FullName); - return; - } - - var files = dir.GetFiles("*.*", SearchOption.AllDirectories); - foreach (var file in files) - { - if (DateTime.UtcNow - file.LastWriteTimeUtc > _age) - { - try - { - file.IsReadOnly = false; - file.Delete(); - } - catch (Exception ex) - { - _logger.LogError(ex, "Could not delete temp file {FileName}", file.FullName); - } - } - } - } - - public override bool IsAsync => false; - } -} diff --git a/src/Umbraco.Infrastructure/HostedServices/TempFileCleanup.cs b/src/Umbraco.Infrastructure/HostedServices/TempFileCleanup.cs new file mode 100644 index 0000000000..5b5feca029 --- /dev/null +++ b/src/Umbraco.Infrastructure/HostedServices/TempFileCleanup.cs @@ -0,0 +1,88 @@ +using System; +using System.IO; +using Microsoft.Extensions.Logging; +using Umbraco.Core; +using Umbraco.Core.IO; + +namespace Umbraco.Infrastructure.HostedServices +{ + /// + /// Used to cleanup temporary file locations. + /// + /// + /// Will run on all servers - even though file upload should only be handled on the master, this will + /// ensure that in the case it happes on replicas that they are cleaned up too. + /// + public class TempFileCleanup : RecurringHostedServiceBase + { + private readonly IIOHelper _ioHelper; + private readonly IMainDom _mainDom; + private readonly ILogger _logger; + + private readonly DirectoryInfo[] _tempFolders; + private readonly TimeSpan _age = TimeSpan.FromDays(1); + + public TempFileCleanup(IIOHelper ioHelper, IMainDom mainDom, ILogger logger) + : base(TimeSpan.FromMinutes(60), DefaultDelay) + { + _ioHelper = ioHelper; + _mainDom = mainDom; + _logger = logger; + + _tempFolders = _ioHelper.GetTempFolders(); + } + + public override async void ExecuteAsync(object state) + { + // Ensure we do not run if not main domain + if (_mainDom.IsMainDom == false) + { + _logger.LogDebug("Does not run if not MainDom."); + return; + } + + foreach (var folder in _tempFolders) + { + CleanupFolder(folder); + } + } + + private void CleanupFolder(DirectoryInfo folder) + { + var result = _ioHelper.CleanFolder(folder, _age); + switch (result.Status) + { + case CleanFolderResultStatus.FailedAsDoesNotExist: + _logger.LogDebug("The cleanup folder doesn't exist {Folder}", folder.FullName); + break; + case CleanFolderResultStatus.FailedWithException: + _logger.LogError(result.Exception, "Could not delete temp file {FileName}", result.ErroringFile.FullName); + break; + } + + folder.Refresh(); // In case it's changed during runtime + if (!folder.Exists) + { + _logger.LogDebug("The cleanup folder doesn't exist {Folder}", folder.FullName); + return; + } + + var files = folder.GetFiles("*.*", SearchOption.AllDirectories); + foreach (var file in files) + { + if (DateTime.UtcNow - file.LastWriteTimeUtc > _age) + { + try + { + file.IsReadOnly = false; + file.Delete(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Could not delete temp file {FileName}", file.FullName); + } + } + } + } + } +} diff --git a/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs b/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs index af7ca33256..513b2abd89 100644 --- a/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs +++ b/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; +using System.Collections.Generic; using System.Threading; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; @@ -21,8 +18,6 @@ namespace Umbraco.Web.Scheduling { private const int DefaultDelayMilliseconds = 180000; // 3 mins private const int OneMinuteMilliseconds = 60000; - private const int FiveMinuteMilliseconds = 300000; - private const int OneHourMilliseconds = 3600000; private readonly IRuntimeState _runtime; private readonly IMainDom _mainDom; @@ -43,7 +38,6 @@ namespace Umbraco.Web.Scheduling private BackgroundTaskRunner _publishingRunner; private BackgroundTaskRunner _scrubberRunner; - private BackgroundTaskRunner _fileCleanupRunner; private bool _started; private object _locker = new object(); @@ -82,7 +76,6 @@ namespace Umbraco.Web.Scheduling // backgrounds runners are web aware, if the app domain dies, these tasks will wind down correctly _publishingRunner = new BackgroundTaskRunner("ScheduledPublishing", logger, _applicationShutdownRegistry); _scrubberRunner = new BackgroundTaskRunner("LogScrubber", logger, _applicationShutdownRegistry); - _fileCleanupRunner = new BackgroundTaskRunner("TempFileCleanup", logger, _applicationShutdownRegistry); // we will start the whole process when a successful request is made _requestAccessor.RouteAttempt += RegisterBackgroundTasksOnce; @@ -115,7 +108,6 @@ namespace Umbraco.Web.Scheduling tasks.Add(RegisterScheduledPublishing()); tasks.Add(RegisterLogScrubber(_loggingSettings)); - tasks.Add(RegisterTempFileCleanup()); return tasks.ToArray(); }); @@ -138,29 +130,5 @@ namespace Umbraco.Web.Scheduling _scrubberRunner.TryAdd(task); return task; } - - private IBackgroundTask RegisterTempFileCleanup() - { - - var tempFolderPaths = new[] - { - _hostingEnvironment.MapPathContentRoot(Constants.SystemDirectories.TempFileUploads) - }; - - foreach (var tempFolderPath in tempFolderPaths) - { - //ensure it exists - Directory.CreateDirectory(tempFolderPath); - } - - // temp file cleanup, will run on all servers - even though file upload should only be handled on the master, this will - // ensure that in the case it happes on replicas that they are cleaned up. - var task = new TempFileCleanup(_fileCleanupRunner, DefaultDelayMilliseconds, OneHourMilliseconds, - tempFolderPaths.Select(x=>new DirectoryInfo(x)), - TimeSpan.FromDays(1), //files that are over a day old - _mainDom, _profilingLogger, _loggerFactory.CreateLogger()); - _scrubberRunner.TryAdd(task); - return task; - } } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/TempFileCleanupTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/TempFileCleanupTests.cs new file mode 100644 index 0000000000..bdebd3055c --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/TempFileCleanupTests.cs @@ -0,0 +1,64 @@ +using System; +using System.IO; +using Microsoft.Extensions.Logging; +using Moq; +using NUnit.Framework; +using Umbraco.Core; +using Umbraco.Core.IO; +using Umbraco.Core.Logging; +using Umbraco.Infrastructure.HostedServices; + +namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices +{ + [TestFixture] + public class TempFileCleanupTests + { + private Mock _mockIOHelper; + private string _testPath = @"c:\test\temp\path"; + + [Test] + public void Does_Not_Execute_When_Not_Main_Dom() + { + var sut = CreateTempFileCleanup(isMainDom: false); + sut.ExecuteAsync(null); + VerifyFilesNotCleaned(); + } + + [Test] + public void Executes_And_Cleans_Files() + { + var sut = CreateTempFileCleanup(); + sut.ExecuteAsync(null); + VerifyFilesCleaned(); + } + + private TempFileCleanup CreateTempFileCleanup(bool isMainDom = true) + { + var mockMainDom = new Mock(); + mockMainDom.SetupGet(x => x.IsMainDom).Returns(isMainDom); + + _mockIOHelper = new Mock(); + _mockIOHelper.Setup(x => x.GetTempFolders()).Returns(new DirectoryInfo[] { new DirectoryInfo(_testPath) }); + + var mockLogger = new Mock>(); + var mockProfilingLogger = new Mock(); + + return new TempFileCleanup(_mockIOHelper.Object, mockMainDom.Object, mockLogger.Object); + } + + private void VerifyFilesNotCleaned() + { + VerifyFilesCleaned(Times.Never()); + } + + private void VerifyFilesCleaned() + { + VerifyFilesCleaned(Times.Once()); + } + + private void VerifyFilesCleaned(Times times) + { + _mockIOHelper.Verify(x => x.CleanFolder(It.Is(y => y.FullName == _testPath), It.IsAny()), times); + } + } +} diff --git a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs index 2f82f86ba4..ec5dbd2781 100644 --- a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs @@ -294,6 +294,7 @@ namespace Umbraco.Extensions { services.AddHostedService(); services.AddHostedService(); + services.AddHostedService(); return services; } From 092fcac28afa841bdaee1a57e7675b1d767ecf9c Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Sat, 31 Oct 2020 11:04:02 +0100 Subject: [PATCH 29/56] Fixed mock leading to failing test run. --- .../HostedServices/TempFileCleanupTests.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/TempFileCleanupTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/TempFileCleanupTests.cs index bdebd3055c..827a4f83de 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/TempFileCleanupTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/TempFileCleanupTests.cs @@ -38,7 +38,10 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices mockMainDom.SetupGet(x => x.IsMainDom).Returns(isMainDom); _mockIOHelper = new Mock(); - _mockIOHelper.Setup(x => x.GetTempFolders()).Returns(new DirectoryInfo[] { new DirectoryInfo(_testPath) }); + _mockIOHelper.Setup(x => x.GetTempFolders()) + .Returns(new DirectoryInfo[] { new DirectoryInfo(_testPath) }); + _mockIOHelper.Setup(x => x.CleanFolder(It.IsAny(), It.IsAny())) + .Returns(CleanFolderResult.Success()); var mockLogger = new Mock>(); var mockProfilingLogger = new Mock(); From 88380a17aea8b7529991827ce906409e8e70d2d0 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Sat, 31 Oct 2020 14:13:24 +0100 Subject: [PATCH 30/56] Migrated log scrubber backgroun task to a hosted service. --- .../LogScrubber.cs | 76 +++++++-------- .../Scheduling/SchedulerComponent.cs | 31 +----- .../HostedServices/LogScrubberTests.cs | 94 +++++++++++++++++++ .../UmbracoCoreServiceCollectionExtensions.cs | 2 + 4 files changed, 133 insertions(+), 70 deletions(-) rename src/Umbraco.Infrastructure/{Scheduling => HostedServices}/LogScrubber.cs (63%) create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/LogScrubberTests.cs diff --git a/src/Umbraco.Infrastructure/Scheduling/LogScrubber.cs b/src/Umbraco.Infrastructure/HostedServices/LogScrubber.cs similarity index 63% rename from src/Umbraco.Infrastructure/Scheduling/LogScrubber.cs rename to src/Umbraco.Infrastructure/HostedServices/LogScrubber.cs index c1b0b2e6d3..c7b1e1eece 100644 --- a/src/Umbraco.Infrastructure/Scheduling/LogScrubber.cs +++ b/src/Umbraco.Infrastructure/HostedServices/LogScrubber.cs @@ -1,17 +1,22 @@ using System; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Logging; using Umbraco.Core.Scoping; using Umbraco.Core.Services; using Umbraco.Core.Sync; -using Microsoft.Extensions.Logging; -namespace Umbraco.Web.Scheduling +namespace Umbraco.Infrastructure.HostedServices { - public class LogScrubber : RecurringTaskBase + /// + /// Log scrubbing hosted service. + /// + /// + /// Will only run on non-replica servers. + /// + public class LogScrubber : RecurringHostedServiceBase { private readonly IMainDom _mainDom; private readonly IServerRegistrar _serverRegistrar; @@ -21,72 +26,63 @@ namespace Umbraco.Web.Scheduling private readonly ILogger _logger; private readonly IScopeProvider _scopeProvider; - public LogScrubber(IBackgroundTaskRunner runner, int delayMilliseconds, int periodMilliseconds, - IMainDom mainDom, IServerRegistrar serverRegistrar, IAuditService auditService, IOptions settings, IScopeProvider scopeProvider, IProfilingLogger profilingLogger , ILogger logger) - : base(runner, delayMilliseconds, periodMilliseconds) + public LogScrubber(IMainDom mainDom, IServerRegistrar serverRegistrar, IAuditService auditService, IOptions settings, IScopeProvider scopeProvider, ILogger logger, IProfilingLogger profilingLogger) + : base(TimeSpan.FromHours(4), DefaultDelay) { _mainDom = mainDom; _serverRegistrar = serverRegistrar; _auditService = auditService; _settings = settings.Value; _scopeProvider = scopeProvider; - _profilingLogger = profilingLogger ; _logger = logger; + _profilingLogger = profilingLogger; } - // maximum age, in minutes - private int GetLogScrubbingMaximumAge(LoggingSettings settings) - { - var maximumAge = 24 * 60; // 24 hours, in minutes - try - { - if (settings.MaxLogAge > -1) - maximumAge = settings.MaxLogAge; - } - catch (Exception ex) - { - _logger.LogError(ex, "Unable to locate a log scrubbing maximum age. Defaulting to 24 hours."); - } - return maximumAge; - - } - - public static int GetLogScrubbingInterval() - { - const int interval = 4 * 60 * 60 * 1000; // 4 hours, in milliseconds - return interval; - } - - public override bool PerformRun() + public override async void ExecuteAsync(object state) { switch (_serverRegistrar.GetCurrentServerRole()) { case ServerRole.Replica: _logger.LogDebug("Does not run on replica servers."); - return true; // DO repeat, server role can change + return; case ServerRole.Unknown: _logger.LogDebug("Does not run on servers with unknown role."); - return true; // DO repeat, server role can change + return; } - // ensure we do not run if not main domain, but do NOT lock it + // Ensure we do not run if not main domain, but do NOT lock it if (_mainDom.IsMainDom == false) { _logger.LogDebug("Does not run if not MainDom."); - return false; // do NOT repeat, going down + return; } // Ensure we use an explicit scope since we are running on a background thread. using (var scope = _scopeProvider.CreateScope()) using (_profilingLogger.DebugDuration("Log scrubbing executing", "Log scrubbing complete")) { - _auditService.CleanLogs(GetLogScrubbingMaximumAge(_settings)); + _auditService.CleanLogs(GetLogScrubbingMaximumAgeInMinutes(_settings)); scope.Complete(); } - - return true; // repeat } - public override bool IsAsync => false; + private int GetLogScrubbingMaximumAgeInMinutes(LoggingSettings settings) + { + var maximumAge = 24 * 60; // 24 hours, in minutes + try + { + if (settings.MaxLogAge > -1) + { + maximumAge = settings.MaxLogAge; + } + } + catch (Exception ex) + { + _logger.LogError(ex, "Unable to locate a log scrubbing maximum age. Defaulting to 24 hours."); + } + + return maximumAge; + + } } } diff --git a/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs b/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs index 513b2abd89..6346673697 100644 --- a/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs +++ b/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs @@ -1,13 +1,9 @@ using System.Collections.Generic; using System.Threading; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; using Umbraco.Core; using Umbraco.Core.Composing; -using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; -using Umbraco.Core.Scoping; using Umbraco.Core.Services; using Umbraco.Core.Sync; using Umbraco.Web.Routing; @@ -23,42 +19,30 @@ namespace Umbraco.Web.Scheduling private readonly IMainDom _mainDom; private readonly IServerRegistrar _serverRegistrar; private readonly IContentService _contentService; - private readonly IAuditService _auditService; - private readonly IProfilingLogger _profilingLogger; private readonly ILogger _logger; private readonly ILoggerFactory _loggerFactory; private readonly IApplicationShutdownRegistry _applicationShutdownRegistry; - private readonly IScopeProvider _scopeProvider; private readonly IUmbracoContextFactory _umbracoContextFactory; private readonly IServerMessenger _serverMessenger; private readonly IRequestAccessor _requestAccessor; private readonly IBackofficeSecurityFactory _backofficeSecurityFactory; - private readonly LoggingSettings _loggingSettings; - private readonly IHostingEnvironment _hostingEnvironment; private BackgroundTaskRunner _publishingRunner; - private BackgroundTaskRunner _scrubberRunner; private bool _started; private object _locker = new object(); private IBackgroundTask[] _tasks; public SchedulerComponent(IRuntimeState runtime, IMainDom mainDom, IServerRegistrar serverRegistrar, - IContentService contentService, IAuditService auditService, - IScopeProvider scopeProvider, IUmbracoContextFactory umbracoContextFactory, IProfilingLogger profilingLogger, ILoggerFactory loggerFactory, + IContentService contentService, IUmbracoContextFactory umbracoContextFactory, ILoggerFactory loggerFactory, IApplicationShutdownRegistry applicationShutdownRegistry, IServerMessenger serverMessenger, IRequestAccessor requestAccessor, - IOptions loggingSettings, - IHostingEnvironment hostingEnvironment, IBackofficeSecurityFactory backofficeSecurityFactory) { _runtime = runtime; _mainDom = mainDom; _serverRegistrar = serverRegistrar; _contentService = contentService; - _auditService = auditService; - _scopeProvider = scopeProvider; - _profilingLogger = profilingLogger; _loggerFactory = loggerFactory; _logger = loggerFactory.CreateLogger(); _applicationShutdownRegistry = applicationShutdownRegistry; @@ -66,8 +50,6 @@ namespace Umbraco.Web.Scheduling _serverMessenger = serverMessenger; _requestAccessor = requestAccessor; _backofficeSecurityFactory = backofficeSecurityFactory; - _loggingSettings = loggingSettings.Value; - _hostingEnvironment = hostingEnvironment; } public void Initialize() @@ -75,7 +57,6 @@ namespace Umbraco.Web.Scheduling var logger = _loggerFactory.CreateLogger>(); // backgrounds runners are web aware, if the app domain dies, these tasks will wind down correctly _publishingRunner = new BackgroundTaskRunner("ScheduledPublishing", logger, _applicationShutdownRegistry); - _scrubberRunner = new BackgroundTaskRunner("LogScrubber", logger, _applicationShutdownRegistry); // we will start the whole process when a successful request is made _requestAccessor.RouteAttempt += RegisterBackgroundTasksOnce; @@ -107,7 +88,6 @@ namespace Umbraco.Web.Scheduling var tasks = new List(); tasks.Add(RegisterScheduledPublishing()); - tasks.Add(RegisterLogScrubber(_loggingSettings)); return tasks.ToArray(); }); @@ -121,14 +101,5 @@ namespace Umbraco.Web.Scheduling _publishingRunner.TryAdd(task); return task; } - - private IBackgroundTask RegisterLogScrubber(LoggingSettings settings) - { - // log scrubbing - // install on all, will only run on non-replica servers - var task = new LogScrubber(_scrubberRunner, DefaultDelayMilliseconds, LogScrubber.GetLogScrubbingInterval(), _mainDom, _serverRegistrar, _auditService, Options.Create(settings), _scopeProvider, _profilingLogger, _loggerFactory.CreateLogger()); - _scrubberRunner.TryAdd(task); - return task; - } } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/LogScrubberTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/LogScrubberTests.cs new file mode 100644 index 0000000000..06baa41432 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/LogScrubberTests.cs @@ -0,0 +1,94 @@ +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Moq; +using NUnit.Framework; +using Umbraco.Core; +using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Logging; +using Umbraco.Core.Scoping; +using Umbraco.Core.Services; +using Umbraco.Core.Sync; +using Umbraco.Infrastructure.HostedServices; + +namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices +{ + [TestFixture] + public class LogScrubberTests + { + private Mock _mockAuditService; + + const int _maxLogAgeInMinutes = 60; + + [Test] + public void Does_Not_Execute_When_Server_Role_Is_Replica() + { + var sut = CreateLogScrubber(serverRole: ServerRole.Replica); + sut.ExecuteAsync(null); + VerifyLogsNotScrubbed(); + } + + [Test] + public void Does_Not_Execute_When_Server_Role_Is_Unknown() + { + var sut = CreateLogScrubber(serverRole: ServerRole.Unknown); + sut.ExecuteAsync(null); + VerifyLogsNotScrubbed(); + } + + [Test] + public void Does_Not_Execute_When_Not_Main_Dom() + { + var sut = CreateLogScrubber(isMainDom: false); + sut.ExecuteAsync(null); + VerifyLogsNotScrubbed(); + } + + [Test] + public void Executes_And_Srubs_Logs() + { + var sut = CreateLogScrubber(); + sut.ExecuteAsync(null); + VerifyLogsScrubbed(); + } + + private LogScrubber CreateLogScrubber( + ServerRole serverRole = ServerRole.Single, + bool isMainDom = true) + { + var settings = new LoggingSettings + { + MaxLogAge = _maxLogAgeInMinutes, + }; + + var mockServerRegistrar = new Mock(); + mockServerRegistrar.Setup(x => x.GetCurrentServerRole()).Returns(serverRole); + + var mockMainDom = new Mock(); + mockMainDom.SetupGet(x => x.IsMainDom).Returns(isMainDom); + + var mockScopeProvider = new Mock(); + var mockLogger = new Mock>(); + var mockProfilingLogger = new Mock(); + + _mockAuditService = new Mock(); + + return new LogScrubber(mockMainDom.Object, mockServerRegistrar.Object, _mockAuditService.Object, + Options.Create(settings), mockScopeProvider.Object, mockLogger.Object, mockProfilingLogger.Object); + } + + private void VerifyLogsNotScrubbed() + { + VerifyLogsScrubbed(Times.Never()); + } + + private void VerifyLogsScrubbed() + { + VerifyLogsScrubbed(Times.Once()); + } + + private void VerifyLogsScrubbed(Times times) + { + _mockAuditService.Verify(x => x.CleanLogs(It.Is(y => y == _maxLogAgeInMinutes)), times); + } + } +} diff --git a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs index ec5dbd2781..4b5b2ee866 100644 --- a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs @@ -294,7 +294,9 @@ namespace Umbraco.Extensions { services.AddHostedService(); services.AddHostedService(); + services.AddHostedService(); services.AddHostedService(); + return services; } From 433fdbb04700674ee1ec31ecfc09c28ff5149cf6 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Sat, 31 Oct 2020 14:25:40 +0100 Subject: [PATCH 31/56] Change LoggingSettings.MaxLogAge from integer (minutes) to a TimeSpan. --- .../Configuration/Models/LoggingSettings.cs | 6 ++++-- .../HostedServices/LogScrubber.cs | 21 +------------------ .../HostedServices/LogScrubberTests.cs | 7 ++++--- 3 files changed, 9 insertions(+), 25 deletions(-) diff --git a/src/Umbraco.Core/Configuration/Models/LoggingSettings.cs b/src/Umbraco.Core/Configuration/Models/LoggingSettings.cs index 414ff06b57..7d79bb83ae 100644 --- a/src/Umbraco.Core/Configuration/Models/LoggingSettings.cs +++ b/src/Umbraco.Core/Configuration/Models/LoggingSettings.cs @@ -1,7 +1,9 @@ -namespace Umbraco.Core.Configuration.Models +using System; + +namespace Umbraco.Core.Configuration.Models { public class LoggingSettings { - public int MaxLogAge { get; set; } = -1; + public TimeSpan MaxLogAge { get; set; } = TimeSpan.FromHours(24); } } diff --git a/src/Umbraco.Infrastructure/HostedServices/LogScrubber.cs b/src/Umbraco.Infrastructure/HostedServices/LogScrubber.cs index c7b1e1eece..d01609e9a3 100644 --- a/src/Umbraco.Infrastructure/HostedServices/LogScrubber.cs +++ b/src/Umbraco.Infrastructure/HostedServices/LogScrubber.cs @@ -61,28 +61,9 @@ namespace Umbraco.Infrastructure.HostedServices using (var scope = _scopeProvider.CreateScope()) using (_profilingLogger.DebugDuration("Log scrubbing executing", "Log scrubbing complete")) { - _auditService.CleanLogs(GetLogScrubbingMaximumAgeInMinutes(_settings)); + _auditService.CleanLogs((int)_settings.MaxLogAge.TotalMinutes); scope.Complete(); } } - - private int GetLogScrubbingMaximumAgeInMinutes(LoggingSettings settings) - { - var maximumAge = 24 * 60; // 24 hours, in minutes - try - { - if (settings.MaxLogAge > -1) - { - maximumAge = settings.MaxLogAge; - } - } - catch (Exception ex) - { - _logger.LogError(ex, "Unable to locate a log scrubbing maximum age. Defaulting to 24 hours."); - } - - return maximumAge; - - } } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/LogScrubberTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/LogScrubberTests.cs index 06baa41432..2903a656df 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/LogScrubberTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/LogScrubberTests.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.Logging; +using System; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Moq; using NUnit.Framework; @@ -44,7 +45,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices } [Test] - public void Executes_And_Srubs_Logs() + public void Executes_And_Scrubs_Logs() { var sut = CreateLogScrubber(); sut.ExecuteAsync(null); @@ -57,7 +58,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices { var settings = new LoggingSettings { - MaxLogAge = _maxLogAgeInMinutes, + MaxLogAge = TimeSpan.FromMinutes(_maxLogAgeInMinutes), }; var mockServerRegistrar = new Mock(); From a60fe36c33a346fe575213851bf233da9f794dd8 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Sat, 31 Oct 2020 14:46:56 +0100 Subject: [PATCH 32/56] Fixed amended temp file clean-up routine to restore behaviour of continuing on single file error. --- src/Umbraco.Core/IO/CleanFolderResult.cs | 25 +++++++++++++------ src/Umbraco.Core/IO/IOHelper.cs | 8 +++--- .../HostedServices/TempFileCleanup.cs | 6 ++++- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/src/Umbraco.Core/IO/CleanFolderResult.cs b/src/Umbraco.Core/IO/CleanFolderResult.cs index b85705ea83..eb783f230d 100644 --- a/src/Umbraco.Core/IO/CleanFolderResult.cs +++ b/src/Umbraco.Core/IO/CleanFolderResult.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IO; namespace Umbraco.Core.IO @@ -16,11 +17,9 @@ namespace Umbraco.Core.IO { } - public CleanFolderResultStatus Status { get; set; } + public CleanFolderResultStatus Status { get; private set; } - public Exception Exception { get; set; } - - public FileInfo ErroringFile { get; set; } + public IReadOnlyCollection Errors { get; private set; } public static CleanFolderResult Success() { @@ -32,14 +31,26 @@ namespace Umbraco.Core.IO return new CleanFolderResult { Status = CleanFolderResultStatus.FailedAsDoesNotExist }; } - public static CleanFolderResult FailedWithException(Exception exception, FileInfo erroringFile) + public static CleanFolderResult FailedWithErrors(List errors) { return new CleanFolderResult { Status = CleanFolderResultStatus.FailedWithException, - Exception = exception, - ErroringFile = erroringFile, + Errors = errors.AsReadOnly(), }; } + + public class Error + { + public Error(Exception exception, FileInfo erroringFile) + { + Exception = exception; + ErroringFile = erroringFile; + } + + public Exception Exception { get; set; } + + public FileInfo ErroringFile { get; set; } + } } } diff --git a/src/Umbraco.Core/IO/IOHelper.cs b/src/Umbraco.Core/IO/IOHelper.cs index 260c6923ed..f14dabd7ee 100644 --- a/src/Umbraco.Core/IO/IOHelper.cs +++ b/src/Umbraco.Core/IO/IOHelper.cs @@ -224,6 +224,7 @@ namespace Umbraco.Core.IO } var files = folder.GetFiles("*.*", SearchOption.AllDirectories); + var errors = new List(); foreach (var file in files) { if (DateTime.UtcNow - file.LastWriteTimeUtc > age) @@ -235,13 +236,14 @@ namespace Umbraco.Core.IO } catch (Exception ex) { - return CleanFolderResult.FailedWithException(ex, file); + errors.Add(new CleanFolderResult.Error(ex, file)); } } } - return CleanFolderResult.Success(); + return errors.Any() + ? CleanFolderResult.FailedWithErrors(errors) + : CleanFolderResult.Success(); } - } } diff --git a/src/Umbraco.Infrastructure/HostedServices/TempFileCleanup.cs b/src/Umbraco.Infrastructure/HostedServices/TempFileCleanup.cs index 5b5feca029..3e565b0112 100644 --- a/src/Umbraco.Infrastructure/HostedServices/TempFileCleanup.cs +++ b/src/Umbraco.Infrastructure/HostedServices/TempFileCleanup.cs @@ -56,7 +56,11 @@ namespace Umbraco.Infrastructure.HostedServices _logger.LogDebug("The cleanup folder doesn't exist {Folder}", folder.FullName); break; case CleanFolderResultStatus.FailedWithException: - _logger.LogError(result.Exception, "Could not delete temp file {FileName}", result.ErroringFile.FullName); + foreach (var error in result.Errors) + { + _logger.LogError(error.Exception, "Could not delete temp file {FileName}", error.ErroringFile.FullName); + } + break; } From a0ce44c9fc0fbfb578945f2f0f037270b4614e75 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Sat, 31 Oct 2020 22:49:12 +0100 Subject: [PATCH 33/56] Changed configuration of first run time for health check notifier from a time string to a cron expression. --- .../Validation/ConfigurationValidatorBase.cs | 6 +-- .../HealthChecksSettingsValidator.cs | 2 +- src/Umbraco.Core/DateTimeExtensions.cs | 37 --------------- src/Umbraco.Core/StringExtensions.cs | 15 ++++-- .../HealthCheckSettingsExtensions.cs | 12 +++-- .../HostedServices/HealthCheckNotifier.cs | 2 +- .../Umbraco.Infrastructure.csproj | 1 + .../HealthCheckSettingsExtensionsTests.cs | 22 +++++---- .../Umbraco.Core/DateTimeExtensionsTests.cs | 46 ------------------- .../StringExtensionsTests.cs | 11 ++--- 10 files changed, 42 insertions(+), 112 deletions(-) rename src/{Umbraco.Core/Configuration/Models => Umbraco.Infrastructure/Configuration}/Extensions/HealthCheckSettingsExtensions.cs (54%) delete mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Core/DateTimeExtensionsTests.cs diff --git a/src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidatorBase.cs b/src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidatorBase.cs index 9b7f02a60c..343ba5656b 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidatorBase.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidatorBase.cs @@ -42,11 +42,11 @@ namespace Umbraco.Core.Configuration.Models.Validation return true; } - public bool ValidateOptionalTime(string configPath, string value, out string message) + public bool ValidateOptionalCronTab(string configPath, string value, out string message) { - if (!string.IsNullOrEmpty(value) && !value.IsValidTimeSpan()) + if (!string.IsNullOrEmpty(value) && !value.IsValidCronTab()) { - message = $"Configuration entry {configPath} contains an invalid time value."; + message = $"Configuration entry {configPath} contains an invalid cron expression."; return false; } diff --git a/src/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidator.cs b/src/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidator.cs index fe6a4d056b..9ecb6fb118 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidator.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidator.cs @@ -16,7 +16,7 @@ namespace Umbraco.Core.Configuration.Models.Validation private bool ValidateNotificationFirstRunTime(string value, out string message) { - return ValidateOptionalTime($"{Constants.Configuration.ConfigHealthChecks}:{nameof(HealthChecksSettings.Notification)}:{nameof(HealthChecksSettings.Notification.FirstRunTime)}", value, out message); + return ValidateOptionalCronTab($"{Constants.Configuration.ConfigHealthChecks}:{nameof(HealthChecksSettings.Notification)}:{nameof(HealthChecksSettings.Notification.FirstRunTime)}", value, out message); } } } diff --git a/src/Umbraco.Core/DateTimeExtensions.cs b/src/Umbraco.Core/DateTimeExtensions.cs index 1920205b69..378d06a637 100644 --- a/src/Umbraco.Core/DateTimeExtensions.cs +++ b/src/Umbraco.Core/DateTimeExtensions.cs @@ -43,42 +43,5 @@ namespace Umbraco.Core Minute, Second } - - /// - /// Calculates the number of minutes from a date time, on a rolling daily basis (so if - /// date time is before the time, calculate onto next day). - /// - /// Date to start from - /// Time to compare against (in Hmm form, e.g. 330, 2200) - /// - public static int PeriodicMinutesFrom(this DateTime fromDateTime, string scheduledTime) - { - // Ensure time provided is 4 digits long - if (scheduledTime.Length == 3) - { - scheduledTime = "0" + scheduledTime; - } - - var scheduledHour = int.Parse(scheduledTime.Substring(0, 2)); - var scheduledMinute = int.Parse(scheduledTime.Substring(2)); - - DateTime scheduledDateTime; - if (IsScheduledInRemainingDay(fromDateTime, scheduledHour, scheduledMinute)) - { - scheduledDateTime = new DateTime(fromDateTime.Year, fromDateTime.Month, fromDateTime.Day, scheduledHour, scheduledMinute, 0); - } - else - { - var nextDay = fromDateTime.AddDays(1); - scheduledDateTime = new DateTime(nextDay.Year, nextDay.Month, nextDay.Day, scheduledHour, scheduledMinute, 0); - } - - return (int)(scheduledDateTime - fromDateTime).TotalMinutes; - } - - private static bool IsScheduledInRemainingDay(DateTime fromDateTime, int scheduledHour, int scheduledMinute) - { - return scheduledHour > fromDateTime.Hour || (scheduledHour == fromDateTime.Hour && scheduledMinute >= fromDateTime.Minute); - } } } diff --git a/src/Umbraco.Core/StringExtensions.cs b/src/Umbraco.Core/StringExtensions.cs index 93d664a2bd..0cf8158518 100644 --- a/src/Umbraco.Core/StringExtensions.cs +++ b/src/Umbraco.Core/StringExtensions.cs @@ -1480,18 +1480,23 @@ namespace Umbraco.Core } /// - /// Validates a string matches a time stamp. + /// Validates a string matches a cron tab (for length only). /// - /// String with timespan representation (in standard timespan format: https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-timespan-format-strings) - /// - public static bool IsValidTimeSpan(this string input) + /// String with timespan representation (in cron tab format: https://github.com/atifaziz/NCrontab/wiki/Crontab-Expression) + /// True if string matches a valid cron expression, false if not. + /// + /// Considering an expression as valid if it's supported by https://github.com/atifaziz/NCrontab/wiki/Crontab-Expression, + /// so only 5 or 6 values are expected. + /// + public static bool IsValidCronTab(this string input) { if (string.IsNullOrEmpty(input)) { return false; } - return TimeSpan.TryParse(input, out var _); + var parts = input.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); + return parts.Length == 5 || parts.Length == 6; } } } diff --git a/src/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensions.cs b/src/Umbraco.Infrastructure/Configuration/Extensions/HealthCheckSettingsExtensions.cs similarity index 54% rename from src/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensions.cs rename to src/Umbraco.Infrastructure/Configuration/Extensions/HealthCheckSettingsExtensions.cs index 3fa37a0b19..57ae58928d 100644 --- a/src/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensions.cs +++ b/src/Umbraco.Infrastructure/Configuration/Extensions/HealthCheckSettingsExtensions.cs @@ -1,6 +1,8 @@ using System; +using NCrontab; +using Umbraco.Core.Configuration.Models; -namespace Umbraco.Core.Configuration.Models.Extensions +namespace Umbraco.Infrastructure.Configuration.Extensions { public static class HealthCheckSettingsExtensions { @@ -14,9 +16,11 @@ namespace Umbraco.Core.Configuration.Models.Extensions } else { - // Otherwise start at scheduled time. - var delay = TimeSpan.FromMinutes(now.PeriodicMinutesFrom(firstRunTime)); - return (delay < defaultDelay) + // Otherwise start at scheduled time according to cron expression, unless within the default delay period. + var firstRunTimeCronExpression = CrontabSchedule.Parse(firstRunTime); + var firstRunOccurance = firstRunTimeCronExpression.GetNextOccurrence(now); + var delay = firstRunOccurance - now; + return delay < defaultDelay ? defaultDelay : delay; } diff --git a/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs b/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs index af0a0f335c..f4cf33fa61 100644 --- a/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs +++ b/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs @@ -4,11 +4,11 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Configuration.Models.Extensions; using Umbraco.Core.HealthCheck; using Umbraco.Core.Logging; using Umbraco.Core.Scoping; using Umbraco.Core.Sync; +using Umbraco.Infrastructure.Configuration.Extensions; using Umbraco.Infrastructure.HealthCheck; using Umbraco.Web.HealthCheck; diff --git a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj index 2343ea806a..2f681efde3 100644 --- a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj +++ b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj @@ -20,6 +20,7 @@ + diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensionsTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensionsTests.cs index 3ec9af0b5a..d1819fd83e 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensionsTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensionsTests.cs @@ -1,26 +1,30 @@ using System; using NUnit.Framework; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Configuration.Models.Extensions; +using Umbraco.Infrastructure.Configuration.Extensions; namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Extensions { [TestFixture] public class HealthCheckSettingsExtensionsTests { - [Test] - public void Returns_Notification_Delay_From_Provided_Time() + [TestCase("30 12 * * *", 30)] + [TestCase("15 18 * * *", 60 * 6 + 15)] + [TestCase("0 3 * * *", 60 * 15)] + [TestCase("0 3 2 * *", 24 * 60 * 1 + 60 * 15)] + [TestCase("0 6 * * 3", 24 * 60 * 3 + 60 * 18)] + public void Returns_Notification_Delay_From_Provided_Time(string firstRunTimeCronExpression, int expectedDelayInMinutes) { var settings = new HealthChecksSettings { Notification = new HealthChecksNotificationSettings { - FirstRunTime = "1230", + FirstRunTime = firstRunTimeCronExpression, } }; - var now = DateTime.Now.Date.AddHours(12); + var now = new DateTime(2020, 10, 31, 12, 0, 0); var result = settings.GetNotificationDelay(now, TimeSpan.Zero); - Assert.AreEqual(30, result.Minutes); + Assert.AreEqual(expectedDelayInMinutes, result.TotalMinutes); } [Test] @@ -30,12 +34,12 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Extensions { Notification = new HealthChecksNotificationSettings { - FirstRunTime = "1230", + FirstRunTime = "30 12 * * *", } }; - var now = DateTime.Now.Date.AddHours(12).AddMinutes(25); + var now = new DateTime(2020, 10, 31, 12, 25, 0); var result = settings.GetNotificationDelay(now, TimeSpan.FromMinutes(10)); - Assert.AreEqual(10, result.Minutes); + Assert.AreEqual(10, result.TotalMinutes); } } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/DateTimeExtensionsTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/DateTimeExtensionsTests.cs deleted file mode 100644 index b1585aa17f..0000000000 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/DateTimeExtensionsTests.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using NUnit.Framework; -using Umbraco.Core; - -namespace Umbraco.Tests.UnitTests.Umbraco.Core -{ - [TestFixture] - public class DateTimeExtensionsTests - { - [Test] - public void PeriodicMinutesFrom_PostTime_CalculatesMinutesBetween() - { - var nowDateTime = new DateTime(2017, 1, 1, 10, 30, 0); - var scheduledTime = "1145"; - var minutesBetween = nowDateTime.PeriodicMinutesFrom(scheduledTime); - Assert.AreEqual(75, minutesBetween); - } - - [Test] - public void PeriodicMinutesFrom_PriorTime_CalculatesMinutesBetween() - { - var nowDateTime = new DateTime(2017, 1, 1, 10, 30, 0); - var scheduledTime = "900"; - var minutesBetween = nowDateTime.PeriodicMinutesFrom(scheduledTime); - Assert.AreEqual(1350, minutesBetween); - } - - [Test] - public void PeriodicMinutesFrom_PriorTime_WithLeadingZero_CalculatesMinutesBetween() - { - var nowDateTime = new DateTime(2017, 1, 1, 10, 30, 0); - var scheduledTime = "0900"; - var minutesBetween = nowDateTime.PeriodicMinutesFrom(scheduledTime); - Assert.AreEqual(1350, minutesBetween); - } - - [Test] - public void PeriodicMinutesFrom_SameTime_CalculatesMinutesBetween() - { - var nowDateTime = new DateTime(2017, 1, 1, 10, 30, 0); - var scheduledTime = "1030"; - var minutesBetween = nowDateTime.PeriodicMinutesFrom(scheduledTime); - Assert.AreEqual(0, minutesBetween); - } - } -} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/ShortStringHelper/StringExtensionsTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/ShortStringHelper/StringExtensionsTests.cs index 1644b9049e..427ae532f5 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/ShortStringHelper/StringExtensionsTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/ShortStringHelper/StringExtensionsTests.cs @@ -302,13 +302,12 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.ShortStringHelper } [TestCase("", false)] - [TestCase("12:34", true)] - [TestCase("1:14:23", true)] - [TestCase("25:03", false)] - [TestCase("18:61", false)] - public void IsValidTimeSpan(string input, bool expected) + [TestCase("* * * * 1", true)] + [TestCase("* * * * * 1", true)] + [TestCase("* * * 1", false)] + public void IsValidCronTab(string input, bool expected) { - var result = input.IsValidTimeSpan(); + var result = input.IsValidCronTab(); Assert.AreEqual(expected, result); } } From ed8c29f9028ab480071e77ec0171ffbaa6838aee Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Fri, 30 Oct 2020 19:56:26 +0100 Subject: [PATCH 34/56] Fixes issue with introduced MSDI abstractions where a single implemention is used for two interfaces, ensuring only one singleton instance is created. --- src/Umbraco.Core/ServiceCollectionExtensions.cs | 15 +++++++++++++++ .../Runtime/AspNetCoreComposer.cs | 7 ++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Core/ServiceCollectionExtensions.cs b/src/Umbraco.Core/ServiceCollectionExtensions.cs index 3202cc3a38..e6fcd43af1 100644 --- a/src/Umbraco.Core/ServiceCollectionExtensions.cs +++ b/src/Umbraco.Core/ServiceCollectionExtensions.cs @@ -12,6 +12,21 @@ namespace Umbraco.Core where TImplementing : class, TService => services.Replace(ServiceDescriptor.Singleton()); + /// + /// Registers a unique service as a single instance implementing two interfaces. + /// + /// + /// Hat-tip: https://stackoverflow.com/a/55402016/489433 + /// + public static void AddUnique(this IServiceCollection services) + where TService1 : class + where TService2 : class + where TImplementing : class, TService1, TService2 + { + services.Replace(ServiceDescriptor.Singleton()); + services.Replace(ServiceDescriptor.Singleton(x => (TImplementing)x.GetService())); + } + public static void AddUnique(this IServiceCollection services) where TImplementing : class => services.Replace(ServiceDescriptor.Singleton()); diff --git a/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs b/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs index 39742dcb0d..832cfdb488 100644 --- a/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs +++ b/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs @@ -55,13 +55,11 @@ namespace Umbraco.Web.Common.Runtime composition.Services.AddUnique(); // The umbraco request lifetime - composition.Services.AddUnique(); - composition.Services.AddUnique(); + composition.Services.AddUnique(); - //Password hasher + // Password hasher composition.Services.AddUnique(); - composition.Services.AddUnique(); composition.Services.AddTransient(); composition.Services.AddUnique(); @@ -76,7 +74,6 @@ namespace Umbraco.Web.Common.Runtime composition.Services.AddUnique(); composition.Services.AddUnique(); - // register the umbraco context factory composition.Services.AddUnique(); composition.Services.AddUnique(); From 0bffe9aa554d6c3455cf8b875e7c42cff9ac81ed Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Sat, 31 Oct 2020 22:53:16 +0100 Subject: [PATCH 35/56] Updated health check configuration validation tests to match change to cron expression. --- .../HostedServices/HealthCheckNotifier.cs | 1 - .../Models/Validation/HealthChecksSettingsValidatorTests.cs | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs b/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs index f4cf33fa61..b9e41c8410 100644 --- a/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs +++ b/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs @@ -52,7 +52,6 @@ namespace Umbraco.Infrastructure.HostedServices _logger = logger; _profilingLogger = profilingLogger; } - public override async void ExecuteAsync(object state) { diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidatorTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidatorTests.cs index e6ca06a34b..d38b41720e 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidatorTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidatorTests.cs @@ -21,12 +21,12 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation public void Returns_Fail_For_Configuration_With_Invalid_Notification_FirstRunTime() { var validator = new HealthChecksSettingsValidator(); - var options = BuildHealthChecksSettings(firstRunTime: "25:00"); + var options = BuildHealthChecksSettings(firstRunTime: "0 3 *"); var result = validator.Validate("settings", options); Assert.False(result.Succeeded); } - private static HealthChecksSettings BuildHealthChecksSettings(string firstRunTime = "12:00") + private static HealthChecksSettings BuildHealthChecksSettings(string firstRunTime = "0 3 * * *") { return new HealthChecksSettings { From 719a443af8a7d3a4634b37e3b029a2b145983aa4 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Mon, 2 Nov 2020 11:06:02 +0100 Subject: [PATCH 36/56] Moved CleanFolderResultStatus enum to it's own file. --- src/Umbraco.Core/IO/CleanFolderResult.cs | 7 ------- src/Umbraco.Core/IO/CleanFolderResultStatus.cs | 9 +++++++++ 2 files changed, 9 insertions(+), 7 deletions(-) create mode 100644 src/Umbraco.Core/IO/CleanFolderResultStatus.cs diff --git a/src/Umbraco.Core/IO/CleanFolderResult.cs b/src/Umbraco.Core/IO/CleanFolderResult.cs index eb783f230d..547157daff 100644 --- a/src/Umbraco.Core/IO/CleanFolderResult.cs +++ b/src/Umbraco.Core/IO/CleanFolderResult.cs @@ -4,13 +4,6 @@ using System.IO; namespace Umbraco.Core.IO { - public enum CleanFolderResultStatus - { - Success, - FailedAsDoesNotExist, - FailedWithException - } - public class CleanFolderResult { private CleanFolderResult() diff --git a/src/Umbraco.Core/IO/CleanFolderResultStatus.cs b/src/Umbraco.Core/IO/CleanFolderResultStatus.cs new file mode 100644 index 0000000000..41bd56d53d --- /dev/null +++ b/src/Umbraco.Core/IO/CleanFolderResultStatus.cs @@ -0,0 +1,9 @@ +namespace Umbraco.Core.IO +{ + public enum CleanFolderResultStatus + { + Success, + FailedAsDoesNotExist, + FailedWithException + } +} From 978b8eeda7793765c1bfc742781a1c74fd382f0d Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Mon, 2 Nov 2020 11:19:21 +0100 Subject: [PATCH 37/56] Added additional comments on IOHelper.CleanFolder(). --- src/Umbraco.Core/IO/IIOHelper.cs | 3 ++- src/Umbraco.Core/IO/IOHelper.cs | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Core/IO/IIOHelper.cs b/src/Umbraco.Core/IO/IIOHelper.cs index 510e45890f..5a0f5cab45 100644 --- a/src/Umbraco.Core/IO/IIOHelper.cs +++ b/src/Umbraco.Core/IO/IIOHelper.cs @@ -63,7 +63,8 @@ namespace Umbraco.Core.IO DirectoryInfo[] GetTempFolders(); /// - /// Cleans contents of a folder. + /// Cleans contents of a folder by deleting all files older that the provided age. + /// If deletition of any file errors (e.g. due to a file lock) the process will continue to try to delete all that it can. /// /// Folder to clean. /// Age of files within folder to delete. diff --git a/src/Umbraco.Core/IO/IOHelper.cs b/src/Umbraco.Core/IO/IOHelper.cs index f14dabd7ee..08241d28f4 100644 --- a/src/Umbraco.Core/IO/IOHelper.cs +++ b/src/Umbraco.Core/IO/IOHelper.cs @@ -209,11 +209,12 @@ namespace Umbraco.Core.IO } /// - /// Cleans contents of a folder. + /// Cleans contents of a folder by deleting all files older that the provided age. + /// If deletition of any file errors (e.g. due to a file lock) the process will continue to try to delete all that it can. /// /// Folder to clean. /// Age of files within folder to delete. - /// Result of operation + /// Result of operation. public CleanFolderResult CleanFolder(DirectoryInfo folder, TimeSpan age) { folder.Refresh(); // In case it's changed during runtime. From ebdad9f91e8ad15760681b2fc4c678161d410c76 Mon Sep 17 00:00:00 2001 From: Paul Johnson Date: Mon, 2 Nov 2020 10:54:29 +0000 Subject: [PATCH 38/56] Add additional "mutliple unique" registrations and rename extension for clarity. --- src/Umbraco.Core/ServiceCollectionExtensions.cs | 11 ++++------- src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs | 8 +++----- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/Umbraco.Core/ServiceCollectionExtensions.cs b/src/Umbraco.Core/ServiceCollectionExtensions.cs index e6fcd43af1..d1c89ea17e 100644 --- a/src/Umbraco.Core/ServiceCollectionExtensions.cs +++ b/src/Umbraco.Core/ServiceCollectionExtensions.cs @@ -13,18 +13,15 @@ namespace Umbraco.Core => services.Replace(ServiceDescriptor.Singleton()); /// - /// Registers a unique service as a single instance implementing two interfaces. + /// Registers a singleton instance against multiple interfaces. /// - /// - /// Hat-tip: https://stackoverflow.com/a/55402016/489433 - /// - public static void AddUnique(this IServiceCollection services) + public static void AddMultipleUnique(this IServiceCollection services) where TService1 : class where TService2 : class where TImplementing : class, TService1, TService2 { - services.Replace(ServiceDescriptor.Singleton()); - services.Replace(ServiceDescriptor.Singleton(x => (TImplementing)x.GetService())); + services.AddUnique(); + services.AddUnique(factory => (TImplementing) factory.GetRequiredService()); } public static void AddUnique(this IServiceCollection services) diff --git a/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs b/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs index 832cfdb488..2ba38b6e02 100644 --- a/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs +++ b/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs @@ -49,13 +49,12 @@ namespace Umbraco.Web.Common.Runtime composition.Services.AddUnique(); // Our own netcore implementations - composition.Services.AddUnique(); - composition.Services.AddUnique(); + composition.Services.AddMultipleUnique(); composition.Services.AddUnique(); // The umbraco request lifetime - composition.Services.AddUnique(); + composition.Services.AddMultipleUnique(); // Password hasher composition.Services.AddUnique(); @@ -64,8 +63,7 @@ namespace Umbraco.Web.Common.Runtime composition.Services.AddTransient(); composition.Services.AddUnique(); - composition.Services.AddUnique(); - composition.Services.AddUnique(); + composition.Services.AddMultipleUnique(); composition.Services.AddUnique(); From 21c29d6446f82974df9756904bbf77b7c08790a2 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Mon, 2 Nov 2020 11:59:39 +0100 Subject: [PATCH 39/56] Fixes failing unit test due to null reference. Amended signatures of method under test to support testing without the previously observed behaviour of an erroring test passing but crashing the test runner process. --- .../HostedServices/HealthCheckNotifier.cs | 4 +-- .../HostedServices/KeepAlive.cs | 5 +-- .../HostedServices/LogScrubber.cs | 3 +- .../RecurringHostedServiceBase.cs | 11 ++++++- .../HostedServices/TempFileCleanup.cs | 5 ++- .../HealthCheckNotifierTests.cs | 33 ++++++++++--------- .../HostedServices/KeepAliveTests.cs | 20 +++++------ .../HostedServices/LogScrubberTests.cs | 23 ++++++++----- .../HostedServices/TempFileCleanupTests.cs | 9 ++--- 9 files changed, 68 insertions(+), 45 deletions(-) diff --git a/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs b/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs index af0a0f335c..c42892101a 100644 --- a/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs +++ b/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core; @@ -52,9 +53,8 @@ namespace Umbraco.Infrastructure.HostedServices _logger = logger; _profilingLogger = profilingLogger; } - - public override async void ExecuteAsync(object state) + internal override async Task PerformExecuteAsync(object state) { if (_healthChecksSettings.Notification.Enabled == false) { diff --git a/src/Umbraco.Infrastructure/HostedServices/KeepAlive.cs b/src/Umbraco.Infrastructure/HostedServices/KeepAlive.cs index 337890c799..39ac0f3d87 100644 --- a/src/Umbraco.Infrastructure/HostedServices/KeepAlive.cs +++ b/src/Umbraco.Infrastructure/HostedServices/KeepAlive.cs @@ -1,5 +1,6 @@ using System; using System.Net.Http; +using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core; @@ -35,7 +36,7 @@ namespace Umbraco.Infrastructure.HostedServices _httpClientFactory = httpClientFactory; } - public override async void ExecuteAsync(object state) + internal override async Task PerformExecuteAsync(object state) { if (_keepAliveSettings.DisableKeepAliveTask) { @@ -50,7 +51,7 @@ namespace Umbraco.Infrastructure.HostedServices return; case ServerRole.Unknown: _logger.LogDebug("Does not run on servers with unknown role."); - return; + return; } // Ensure we do not run if not main domain, but do NOT lock it diff --git a/src/Umbraco.Infrastructure/HostedServices/LogScrubber.cs b/src/Umbraco.Infrastructure/HostedServices/LogScrubber.cs index d01609e9a3..1cf2da05f9 100644 --- a/src/Umbraco.Infrastructure/HostedServices/LogScrubber.cs +++ b/src/Umbraco.Infrastructure/HostedServices/LogScrubber.cs @@ -1,4 +1,5 @@ using System; +using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core; @@ -38,7 +39,7 @@ namespace Umbraco.Infrastructure.HostedServices _profilingLogger = profilingLogger; } - public override async void ExecuteAsync(object state) + internal override async Task PerformExecuteAsync(object state) { switch (_serverRegistrar.GetCurrentServerRole()) { diff --git a/src/Umbraco.Infrastructure/HostedServices/RecurringHostedServiceBase.cs b/src/Umbraco.Infrastructure/HostedServices/RecurringHostedServiceBase.cs index 071ada0b62..ee77326115 100644 --- a/src/Umbraco.Infrastructure/HostedServices/RecurringHostedServiceBase.cs +++ b/src/Umbraco.Infrastructure/HostedServices/RecurringHostedServiceBase.cs @@ -31,7 +31,16 @@ namespace Umbraco.Infrastructure.HostedServices return Task.CompletedTask; } - public abstract void ExecuteAsync(object state); + public async void ExecuteAsync(object state) + { + // Delegate work to method returning a task, that can be called and asserted in a unit test. + // Without this there can be behaviour where tests pass, but an error within them causes the test + // running process to crash. + // Hat-tip: https://stackoverflow.com/a/14207615/489433 + await PerformExecuteAsync(state); + } + + internal abstract Task PerformExecuteAsync(object state); public Task StopAsync(CancellationToken cancellationToken) { diff --git a/src/Umbraco.Infrastructure/HostedServices/TempFileCleanup.cs b/src/Umbraco.Infrastructure/HostedServices/TempFileCleanup.cs index 3e565b0112..e27b83c8f6 100644 --- a/src/Umbraco.Infrastructure/HostedServices/TempFileCleanup.cs +++ b/src/Umbraco.Infrastructure/HostedServices/TempFileCleanup.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.IO; @@ -32,7 +33,7 @@ namespace Umbraco.Infrastructure.HostedServices _tempFolders = _ioHelper.GetTempFolders(); } - public override async void ExecuteAsync(object state) + internal override async Task PerformExecuteAsync(object state) { // Ensure we do not run if not main domain if (_mainDom.IsMainDom == false) @@ -45,6 +46,8 @@ namespace Umbraco.Infrastructure.HostedServices { CleanupFolder(folder); } + + return; } private void CleanupFolder(DirectoryInfo folder) diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs index 372b94d9dd..bbbb4035c5 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Moq; @@ -28,66 +29,66 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices private const string _check3Id = "00000000-0000-0000-0000-000000000003"; [Test] - public void Does_Not_Execute_When_Not_Enabled() + public async Task Does_Not_Execute_When_Not_Enabled() { var sut = CreateHealthCheckNotifier(enabled: false); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyNotificationsNotSent(); } [Test] - public void Does_Not_Execute_When_Runtime_State_Is_Not_Run() + public async Task Does_Not_Execute_When_Runtime_State_Is_Not_Run() { var sut = CreateHealthCheckNotifier(runtimeLevel: RuntimeLevel.Boot); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyNotificationsNotSent(); } [Test] - public void Does_Not_Execute_When_Server_Role_Is_Replica() + public async Task Does_Not_Execute_When_Server_Role_Is_Replica() { var sut = CreateHealthCheckNotifier(serverRole: ServerRole.Replica); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyNotificationsNotSent(); } [Test] - public void Does_Not_Execute_When_Server_Role_Is_Unknown() + public async Task Does_Not_Execute_When_Server_Role_Is_Unknown() { var sut = CreateHealthCheckNotifier(serverRole: ServerRole.Unknown); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyNotificationsNotSent(); } [Test] - public void Does_Not_Execute_When_Not_Main_Dom() + public async Task Does_Not_Execute_When_Not_Main_Dom() { var sut = CreateHealthCheckNotifier(isMainDom: false); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyNotificationsNotSent(); } [Test] - public void Does_Not_Execute_With_No_Enabled_Notification_Methods() + public async Task Does_Not_Execute_With_No_Enabled_Notification_Methods() { var sut = CreateHealthCheckNotifier(notificationEnabled: false); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyNotificationsNotSent(); } [Test] - public void Executes_With_Enabled_Notification_Methods() + public async Task Executes_With_Enabled_Notification_Methods() { var sut = CreateHealthCheckNotifier(); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyNotificationsSent(); } [Test] - public void Executes_Only_Enabled_Checks() + public async Task Executes_Only_Enabled_Checks() { var sut = CreateHealthCheckNotifier(); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); _mockNotificationMethod.Verify(x => x.SendAsync(It.Is( y => y.ResultsAsDictionary.Count == 1 && y.ResultsAsDictionary.ContainsKey("Check1"))), Times.Once); } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/KeepAliveTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/KeepAliveTests.cs index 82ecffc683..9fc1454b6d 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/KeepAliveTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/KeepAliveTests.cs @@ -26,42 +26,42 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices private const string _applicationUrl = "https://mysite.com"; [Test] - public void Does_Not_Execute_When_Not_Enabled() + public async Task Does_Not_Execute_When_Not_Enabled() { var sut = CreateKeepAlive(enabled: false); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyKeepAliveRequestNotSent(); } [Test] - public void Does_Not_Execute_When_Server_Role_Is_Replica() + public async Task Does_Not_Execute_When_Server_Role_Is_Replica() { var sut = CreateKeepAlive(serverRole: ServerRole.Replica); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyKeepAliveRequestNotSent(); } [Test] - public void Does_Not_Execute_When_Server_Role_Is_Unknown() + public async Task Does_Not_Execute_When_Server_Role_Is_Unknown() { var sut = CreateKeepAlive(serverRole: ServerRole.Unknown); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyKeepAliveRequestNotSent(); } [Test] - public void Does_Not_Execute_When_Not_Main_Dom() + public async Task Does_Not_Execute_When_Not_Main_Dom() { var sut = CreateKeepAlive(isMainDom: false); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyKeepAliveRequestNotSent(); } [Test] - public void Executes_And_Calls_Ping_Url() + public async Task Executes_And_Calls_Ping_Url() { var sut = CreateKeepAlive(); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyKeepAliveRequestSent(); } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/LogScrubberTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/LogScrubberTests.cs index 2903a656df..d30c83c545 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/LogScrubberTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/LogScrubberTests.cs @@ -1,10 +1,13 @@ using System; +using System.Data; +using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Events; using Umbraco.Core.Logging; using Umbraco.Core.Scoping; using Umbraco.Core.Services; @@ -21,34 +24,34 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices const int _maxLogAgeInMinutes = 60; [Test] - public void Does_Not_Execute_When_Server_Role_Is_Replica() + public async Task Does_Not_Execute_When_Server_Role_Is_Replica() { var sut = CreateLogScrubber(serverRole: ServerRole.Replica); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyLogsNotScrubbed(); } [Test] - public void Does_Not_Execute_When_Server_Role_Is_Unknown() + public async Task Does_Not_Execute_When_Server_Role_Is_Unknown() { var sut = CreateLogScrubber(serverRole: ServerRole.Unknown); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyLogsNotScrubbed(); } [Test] - public void Does_Not_Execute_When_Not_Main_Dom() + public async Task Does_Not_Execute_When_Not_Main_Dom() { var sut = CreateLogScrubber(isMainDom: false); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyLogsNotScrubbed(); } [Test] - public void Executes_And_Scrubs_Logs() + public async Task Executes_And_Scrubs_Logs() { var sut = CreateLogScrubber(); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyLogsScrubbed(); } @@ -67,7 +70,11 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices var mockMainDom = new Mock(); mockMainDom.SetupGet(x => x.IsMainDom).Returns(isMainDom); + var mockScope = new Mock(); var mockScopeProvider = new Mock(); + mockScopeProvider + .Setup(x => x.CreateScope(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) + .Returns(mockScope.Object); var mockLogger = new Mock>(); var mockProfilingLogger = new Mock(); diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/TempFileCleanupTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/TempFileCleanupTests.cs index 827a4f83de..7feda1e9da 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/TempFileCleanupTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/TempFileCleanupTests.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; @@ -17,18 +18,18 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices private string _testPath = @"c:\test\temp\path"; [Test] - public void Does_Not_Execute_When_Not_Main_Dom() + public async Task Does_Not_Execute_When_Not_Main_Dom() { var sut = CreateTempFileCleanup(isMainDom: false); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyFilesNotCleaned(); } [Test] - public void Executes_And_Cleans_Files() + public async Task Executes_And_Cleans_Files() { var sut = CreateTempFileCleanup(); - sut.ExecuteAsync(null); + await sut.PerformExecuteAsync(null); VerifyFilesCleaned(); } From 2f2da679a448997f09ff25a08e57d8a641c24e6d Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Mon, 2 Nov 2020 18:08:25 +0100 Subject: [PATCH 40/56] Migrated scheduled publishing task to a hosted service. --- .../ScheduledPublishing.cs | 66 ++++++---- .../Scheduling/SchedulerComponent.cs | 105 --------------- .../Scheduling/SchedulerComposer.cs | 17 --- .../Testing/IntegrationTestComposer.cs | 1 - .../ScheduledPublishingTests.cs | 124 ++++++++++++++++++ .../UmbracoCoreServiceCollectionExtensions.cs | 1 + 6 files changed, 162 insertions(+), 152 deletions(-) rename src/Umbraco.Infrastructure/{Scheduling => HostedServices}/ScheduledPublishing.cs (66%) delete mode 100644 src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs delete mode 100644 src/Umbraco.Infrastructure/Scheduling/SchedulerComposer.cs create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ScheduledPublishingTests.cs diff --git a/src/Umbraco.Infrastructure/Scheduling/ScheduledPublishing.cs b/src/Umbraco.Infrastructure/HostedServices/ScheduledPublishing.cs similarity index 66% rename from src/Umbraco.Infrastructure/Scheduling/ScheduledPublishing.cs rename to src/Umbraco.Infrastructure/HostedServices/ScheduledPublishing.cs index 81dd8f92af..9c32a80fe2 100644 --- a/src/Umbraco.Infrastructure/Scheduling/ScheduledPublishing.cs +++ b/src/Umbraco.Infrastructure/HostedServices/ScheduledPublishing.cs @@ -1,13 +1,20 @@ using System; using System.Linq; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Services; using Umbraco.Core.Sync; -using Microsoft.Extensions.Logging; +using Umbraco.Web; -namespace Umbraco.Web.Scheduling +namespace Umbraco.Infrastructure.HostedServices { - public class ScheduledPublishing : RecurringTaskBase + /// + /// Hosted service implementation for scheduled publishing feature. + /// + /// + /// Runs only on non-replica servers. + public class ScheduledPublishing : RecurringHostedServiceBase { private readonly IContentService _contentService; private readonly ILogger _logger; @@ -18,11 +25,10 @@ namespace Umbraco.Web.Scheduling private readonly IServerRegistrar _serverRegistrar; private readonly IUmbracoContextFactory _umbracoContextFactory; - public ScheduledPublishing(IBackgroundTaskRunner runner, int delayMilliseconds, - int periodMilliseconds, + public ScheduledPublishing( IRuntimeState runtime, IMainDom mainDom, IServerRegistrar serverRegistrar, IContentService contentService, IUmbracoContextFactory umbracoContextFactory, ILogger logger, IServerMessenger serverMessenger, IBackofficeSecurityFactory backofficeSecurityFactory) - : base(runner, delayMilliseconds, periodMilliseconds) + : base(TimeSpan.FromMinutes(1), DefaultDelay) { _runtime = runtime; _mainDom = mainDom; @@ -34,35 +40,35 @@ namespace Umbraco.Web.Scheduling _backofficeSecurityFactory = backofficeSecurityFactory; } - public override bool IsAsync => false; - - public override bool PerformRun() + internal override async Task PerformExecuteAsync(object state) { if (Suspendable.ScheduledPublishing.CanRun == false) - return true; // repeat, later + { + return; + } switch (_serverRegistrar.GetCurrentServerRole()) { case ServerRole.Replica: _logger.LogDebug("Does not run on replica servers."); - return true; // DO repeat, server role can change + return; case ServerRole.Unknown: _logger.LogDebug("Does not run on servers with unknown role."); - return true; // DO repeat, server role can change + return; } - // ensure we do not run if not main domain, but do NOT lock it + // Ensure we do not run if not main domain, but do NOT lock it if (_mainDom.IsMainDom == false) { _logger.LogDebug("Does not run if not MainDom."); - return false; // do NOT repeat, going down + return; } - // do NOT run publishing if not properly running + // Do NOT run publishing if not properly running if (_runtime.Level != RuntimeLevel.Run) { _logger.LogDebug("Does not run if run level is not Run."); - return true; // repeat/wait + return; } try @@ -79,22 +85,24 @@ namespace Umbraco.Web.Scheduling // - and we should definitively *not* have to flush it here (should be auto) // _backofficeSecurityFactory.EnsureBackofficeSecurity(); - using (var contextReference = _umbracoContextFactory.EnsureUmbracoContext()) + using var contextReference = _umbracoContextFactory.EnsureUmbracoContext(); + try { - try + // Run + var result = _contentService.PerformScheduledPublish(DateTime.Now); + foreach (var grouped in result.GroupBy(x => x.Result)) { - // run - var result = _contentService.PerformScheduledPublish(DateTime.Now); - foreach (var grouped in result.GroupBy(x => x.Result)) - _logger.LogInformation( - "Scheduled publishing result: '{StatusCount}' items with status {Status}", - grouped.Count(), grouped.Key); + _logger.LogInformation( + "Scheduled publishing result: '{StatusCount}' items with status {Status}", + grouped.Count(), grouped.Key); } - finally + } + finally + { + // If running on a temp context, we have to flush the messenger + if (contextReference.IsRoot && _serverMessenger is IBatchedDatabaseServerMessenger m) { - // if running on a temp context, we have to flush the messenger - if (contextReference.IsRoot && _serverMessenger is IBatchedDatabaseServerMessenger m) - m.FlushBatch(); + m.FlushBatch(); } } } @@ -104,7 +112,7 @@ namespace Umbraco.Web.Scheduling _logger.LogError(ex, "Failed."); } - return true; // repeat + return; } } } diff --git a/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs b/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs deleted file mode 100644 index 6346673697..0000000000 --- a/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs +++ /dev/null @@ -1,105 +0,0 @@ -using System.Collections.Generic; -using System.Threading; -using Microsoft.Extensions.Logging; -using Umbraco.Core; -using Umbraco.Core.Composing; -using Umbraco.Core.Hosting; -using Umbraco.Core.Services; -using Umbraco.Core.Sync; -using Umbraco.Web.Routing; - -namespace Umbraco.Web.Scheduling -{ - public sealed class SchedulerComponent : IComponent - { - private const int DefaultDelayMilliseconds = 180000; // 3 mins - private const int OneMinuteMilliseconds = 60000; - - private readonly IRuntimeState _runtime; - private readonly IMainDom _mainDom; - private readonly IServerRegistrar _serverRegistrar; - private readonly IContentService _contentService; - private readonly ILogger _logger; - private readonly ILoggerFactory _loggerFactory; - private readonly IApplicationShutdownRegistry _applicationShutdownRegistry; - private readonly IUmbracoContextFactory _umbracoContextFactory; - private readonly IServerMessenger _serverMessenger; - private readonly IRequestAccessor _requestAccessor; - private readonly IBackofficeSecurityFactory _backofficeSecurityFactory; - - private BackgroundTaskRunner _publishingRunner; - - private bool _started; - private object _locker = new object(); - private IBackgroundTask[] _tasks; - - public SchedulerComponent(IRuntimeState runtime, IMainDom mainDom, IServerRegistrar serverRegistrar, - IContentService contentService, IUmbracoContextFactory umbracoContextFactory, ILoggerFactory loggerFactory, - IApplicationShutdownRegistry applicationShutdownRegistry, - IServerMessenger serverMessenger, IRequestAccessor requestAccessor, - IBackofficeSecurityFactory backofficeSecurityFactory) - { - _runtime = runtime; - _mainDom = mainDom; - _serverRegistrar = serverRegistrar; - _contentService = contentService; - _loggerFactory = loggerFactory; - _logger = loggerFactory.CreateLogger(); - _applicationShutdownRegistry = applicationShutdownRegistry; - _umbracoContextFactory = umbracoContextFactory; - _serverMessenger = serverMessenger; - _requestAccessor = requestAccessor; - _backofficeSecurityFactory = backofficeSecurityFactory; - } - - public void Initialize() - { - var logger = _loggerFactory.CreateLogger>(); - // backgrounds runners are web aware, if the app domain dies, these tasks will wind down correctly - _publishingRunner = new BackgroundTaskRunner("ScheduledPublishing", logger, _applicationShutdownRegistry); - - // we will start the whole process when a successful request is made - _requestAccessor.RouteAttempt += RegisterBackgroundTasksOnce; - } - - public void Terminate() - { - // the AppDomain / maindom / whatever takes care of stopping background task runners - } - - private void RegisterBackgroundTasksOnce(object sender, RoutableAttemptEventArgs e) - { - switch (e.Outcome) - { - case EnsureRoutableOutcome.IsRoutable: - case EnsureRoutableOutcome.NotDocumentRequest: - _requestAccessor.RouteAttempt -= RegisterBackgroundTasksOnce; - RegisterBackgroundTasks(); - break; - } - } - - private void RegisterBackgroundTasks() - { - LazyInitializer.EnsureInitialized(ref _tasks, ref _started, ref _locker, () => - { - _logger.LogDebug("Initializing the scheduler"); - - var tasks = new List(); - - tasks.Add(RegisterScheduledPublishing()); - - return tasks.ToArray(); - }); - } - - private IBackgroundTask RegisterScheduledPublishing() - { - // scheduled publishing/unpublishing - // install on all, will only run on non-replica servers - var task = new ScheduledPublishing(_publishingRunner, DefaultDelayMilliseconds, OneMinuteMilliseconds, _runtime, _mainDom, _serverRegistrar, _contentService, _umbracoContextFactory, _loggerFactory.CreateLogger(), _serverMessenger, _backofficeSecurityFactory); - _publishingRunner.TryAdd(task); - return task; - } - } -} diff --git a/src/Umbraco.Infrastructure/Scheduling/SchedulerComposer.cs b/src/Umbraco.Infrastructure/Scheduling/SchedulerComposer.cs deleted file mode 100644 index 5c56f3d314..0000000000 --- a/src/Umbraco.Infrastructure/Scheduling/SchedulerComposer.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using Umbraco.Core; -using Umbraco.Core.Composing; - -namespace Umbraco.Web.Scheduling -{ - /// - /// Used to do the scheduling for tasks, publishing, etc... - /// - /// - /// All tasks are run in a background task runner which is web aware and will wind down - /// the task correctly instead of killing it completely when the app domain shuts down. - /// - [RuntimeLevel(MinLevel = RuntimeLevel.Run)] - internal sealed class SchedulerComposer : ComponentComposer, ICoreComposer - { } -} diff --git a/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs b/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs index 1fc086c019..f64c2c48b1 100644 --- a/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs +++ b/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs @@ -42,7 +42,6 @@ namespace Umbraco.Tests.Integration.Testing { base.Compose(composition); - composition.Components().Remove(); composition.Components().Remove(); composition.Services.AddUnique(); composition.Services.AddUnique(factory => Mock.Of()); diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ScheduledPublishingTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ScheduledPublishingTests.cs new file mode 100644 index 0000000000..e0fd2a4acc --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ScheduledPublishingTests.cs @@ -0,0 +1,124 @@ +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Moq; +using NUnit.Framework; +using Umbraco.Core; +using Umbraco.Core.Logging; +using Umbraco.Core.Services; +using Umbraco.Core.Sync; +using Umbraco.Infrastructure.HostedServices; +using Umbraco.Web; +using LogLevel = Microsoft.Extensions.Logging.LogLevel; + +namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices +{ + [TestFixture] + public class ScheduledPublishingTests + { + private Mock _mockContentService; + private Mock> _mockLogger; + + [Test] + public async Task Does_Not_Execute_When_Not_Enabled() + { + var sut = CreateScheduledPublishing(enabled: false); + await sut.PerformExecuteAsync(null); + VerifyScheduledPublishingNotPerformed(); + } + + [Test] + public async Task Does_Not_Execute_When_Runtime_State_Is_Not_Run() + { + var sut = CreateScheduledPublishing(runtimeLevel: RuntimeLevel.Boot); + await sut.PerformExecuteAsync(null); + VerifyScheduledPublishingNotPerformed(); + } + + [Test] + public async Task Does_Not_Execute_When_Server_Role_Is_Replica() + { + var sut = CreateScheduledPublishing(serverRole: ServerRole.Replica); + await sut.PerformExecuteAsync(null); + VerifyScheduledPublishingNotPerformed(); + } + + [Test] + public async Task Does_Not_Execute_When_Server_Role_Is_Unknown() + { + var sut = CreateScheduledPublishing(serverRole: ServerRole.Unknown); + await sut.PerformExecuteAsync(null); + VerifyScheduledPublishingNotPerformed(); + } + + [Test] + public async Task Does_Not_Execute_When_Not_Main_Dom() + { + var sut = CreateScheduledPublishing(isMainDom: false); + await sut.PerformExecuteAsync(null); + VerifyScheduledPublishingNotPerformed(); + } + + [Test] + public async Task Executes_And_Performs_Scheduled_Publishing() + { + var sut = CreateScheduledPublishing(); + await sut.PerformExecuteAsync(null); + VerifyScheduledPublishingPerformed(); + } + + private ScheduledPublishing CreateScheduledPublishing( + bool enabled = true, + RuntimeLevel runtimeLevel = RuntimeLevel.Run, + ServerRole serverRole = ServerRole.Single, + bool isMainDom = true) + { + if (enabled) + { + Suspendable.ScheduledPublishing.Resume(); + } + else + { + Suspendable.ScheduledPublishing.Suspend(); + } + + var mockRunTimeState = new Mock(); + mockRunTimeState.SetupGet(x => x.Level).Returns(runtimeLevel); + + var mockServerRegistrar = new Mock(); + mockServerRegistrar.Setup(x => x.GetCurrentServerRole()).Returns(serverRole); + + var mockMainDom = new Mock(); + mockMainDom.SetupGet(x => x.IsMainDom).Returns(isMainDom); + + _mockContentService = new Mock(); + + var mockUmbracoContextFactory = new Mock(); + mockUmbracoContextFactory.Setup(x => x.EnsureUmbracoContext()).Returns(new UmbracoContextReference(null, false, null)); + + _mockLogger = new Mock>(); + + var mockServerMessenger = new Mock(); + + var mockBackOfficeSecurityFactory = new Mock(); + + return new ScheduledPublishing(mockRunTimeState.Object, mockMainDom.Object, mockServerRegistrar.Object, _mockContentService.Object, + mockUmbracoContextFactory.Object, _mockLogger.Object, mockServerMessenger.Object, mockBackOfficeSecurityFactory.Object); + } + + private void VerifyScheduledPublishingNotPerformed() + { + VerifyScheduledPublishingPerformed(Times.Never()); + } + + private void VerifyScheduledPublishingPerformed() + { + VerifyScheduledPublishingPerformed(Times.Once()); + } + + private void VerifyScheduledPublishingPerformed(Times times) + { + _mockContentService.Verify(x => x.PerformScheduledPublish(It.IsAny()), times); + } + } +} diff --git a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs index 4b5b2ee866..80be943eb7 100644 --- a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs @@ -295,6 +295,7 @@ namespace Umbraco.Extensions services.AddHostedService(); services.AddHostedService(); services.AddHostedService(); + services.AddHostedService(); services.AddHostedService(); return services; From 1c2f048402d93ee9fc41d6336583550d8e0a0fb2 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Tue, 3 Nov 2020 07:55:09 +0100 Subject: [PATCH 41/56] Migrated ProfilingViewEngine.cs Signed-off-by: Bjarke Berg --- .../ViewEngines/PluginViewEngine.cs | 48 +++++++++ .../ViewEngines/ProfilingViewEngine.cs | 45 +++++++++ .../ViewEngines}/RenderViewEngine.cs | 44 ++++----- src/Umbraco.Web/Mvc/PluginViewEngine.cs | 99 ------------------- src/Umbraco.Web/Mvc/ProfilingViewEngine.cs | 49 --------- .../Runtime/WebInitialComponent.cs | 4 +- src/Umbraco.Web/Umbraco.Web.csproj | 3 - 7 files changed, 117 insertions(+), 175 deletions(-) create mode 100644 src/Umbraco.Web.Website/ViewEngines/PluginViewEngine.cs create mode 100644 src/Umbraco.Web.Website/ViewEngines/ProfilingViewEngine.cs rename src/{Umbraco.Web/Mvc => Umbraco.Web.Website/ViewEngines}/RenderViewEngine.cs (79%) delete mode 100644 src/Umbraco.Web/Mvc/PluginViewEngine.cs delete mode 100644 src/Umbraco.Web/Mvc/ProfilingViewEngine.cs diff --git a/src/Umbraco.Web.Website/ViewEngines/PluginViewEngine.cs b/src/Umbraco.Web.Website/ViewEngines/PluginViewEngine.cs new file mode 100644 index 0000000000..7c8deb9dd7 --- /dev/null +++ b/src/Umbraco.Web.Website/ViewEngines/PluginViewEngine.cs @@ -0,0 +1,48 @@ +using System.Diagnostics; +using System.Text.Encodings.Web; +using Microsoft.AspNetCore.Mvc.Razor; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; + +namespace Umbraco.Web.Website.ViewEngines +{ + /// + /// A view engine to look into the App_Plugins folder for views for packaged controllers + /// + public class PluginViewEngine : RazorViewEngine + { + public PluginViewEngine( + IRazorPageFactoryProvider pageFactory, + IRazorPageActivator pageActivator, + HtmlEncoder htmlEncoder, + ILoggerFactory loggerFactory, + DiagnosticListener diagnosticListener) + : base(pageFactory, pageActivator, htmlEncoder, OverrideViewLocations(), loggerFactory, diagnosticListener) + { + } + + private static IOptions OverrideViewLocations() + { + return Options.Create(new RazorViewEngineOptions() + { + AreaViewLocationFormats = + { + //set all of the area view locations to the plugin folder + string.Concat(Core.Constants.SystemDirectories.AppPlugins, "/{2}/Views/{1}/{0}.cshtml"), + string.Concat(Core.Constants.SystemDirectories.AppPlugins, "/{2}/Views/Shared/{0}.cshtml"), + + //will be used when we have partial view and child action macros + string.Concat(Core.Constants.SystemDirectories.AppPlugins, "/{2}/Views/Partials/{0}.cshtml"), + string.Concat(Core.Constants.SystemDirectories.AppPlugins, "/{2}/Views/MacroPartials/{0}.cshtml"), + //for partialsCurrent. + string.Concat(Core.Constants.SystemDirectories.AppPlugins, "/{2}/Views/{1}/{0}.cshtml"), + string.Concat(Core.Constants.SystemDirectories.AppPlugins, "/{2}/Views/Shared/{0}.cshtml"), + }, + ViewLocationFormats = + { + string.Concat(Core.Constants.SystemDirectories.AppPlugins, "/{2}/Views/{1}/{0}.cshtml"), + } + }); + } + } +} diff --git a/src/Umbraco.Web.Website/ViewEngines/ProfilingViewEngine.cs b/src/Umbraco.Web.Website/ViewEngines/ProfilingViewEngine.cs new file mode 100644 index 0000000000..070c3f4e65 --- /dev/null +++ b/src/Umbraco.Web.Website/ViewEngines/ProfilingViewEngine.cs @@ -0,0 +1,45 @@ + +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.ViewEngines; +using Umbraco.Core.Logging; + +namespace Umbraco.Web.Website.ViewEngines +{ + public class ProfilingViewEngine: IViewEngine + { + internal readonly IViewEngine Inner; + private readonly IProfiler _profiler; + private readonly string _name; + + public ProfilingViewEngine(IViewEngine inner, IProfiler profiler) + { + Inner = inner; + _profiler = profiler; + _name = inner.GetType().Name; + } + + public ViewEngineResult FindView(ActionContext context, string viewName, bool isMainPage) + { + using (_profiler.Step(string.Format("{0}.FindView, {1}, {2}", _name, viewName, isMainPage))) + { + return WrapResult(Inner.FindView(context, viewName, isMainPage)); + } + } + + private static ViewEngineResult WrapResult(ViewEngineResult innerResult) + { + var profiledResult = innerResult.View is null + ? ViewEngineResult.NotFound(innerResult.ViewName, innerResult.SearchedLocations) + : ViewEngineResult.Found(innerResult.ViewName, innerResult.View); + return profiledResult; + } + + public ViewEngineResult GetView(string executingFilePath, string viewPath, bool isMainPage) + { + using (_profiler.Step(string.Format("{0}.GetView, {1}, {2}, {3}", _name, executingFilePath, viewPath, isMainPage))) + { + return Inner.GetView(executingFilePath, viewPath, isMainPage); + } + } + } +} diff --git a/src/Umbraco.Web/Mvc/RenderViewEngine.cs b/src/Umbraco.Web.Website/ViewEngines/RenderViewEngine.cs similarity index 79% rename from src/Umbraco.Web/Mvc/RenderViewEngine.cs rename to src/Umbraco.Web.Website/ViewEngines/RenderViewEngine.cs index 5f508e8d61..2c81687091 100644 --- a/src/Umbraco.Web/Mvc/RenderViewEngine.cs +++ b/src/Umbraco.Web.Website/ViewEngines/RenderViewEngine.cs @@ -2,13 +2,13 @@ using System.Collections.Generic; using System.IO; using System.Linq; -using System.Web.Mvc; -using Umbraco.Core.Composing; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Razor; +using Microsoft.AspNetCore.Mvc.ViewEngines; using Umbraco.Core.Hosting; -using Umbraco.Core.IO; using Umbraco.Web.Models; -namespace Umbraco.Web.Mvc +namespace Umbraco.Web.Website.ViewEngines { /// /// A view engine to look into the template location specified in the config for the front-end/Rendering part of the cms, @@ -24,24 +24,24 @@ namespace Umbraco.Web.Mvc // http://issues.umbraco.org/issue/U4-1287, http://issues.umbraco.org/issue/U4-1215 private readonly IEnumerable _supplementedPartialViewLocations = new[] { "/Partials/{0}.cshtml", "/MacroPartials/{0}.cshtml", "/{0}.cshtml" }; - /// - /// Constructor - /// - public RenderViewEngine(IHostingEnvironment hostingEnvironment) - { - _hostingEnvironment = hostingEnvironment ?? throw new ArgumentNullException(nameof(hostingEnvironment)); - - const string templateFolder = Constants.ViewLocation; - - // the Render view engine doesn't support Area's so make those blank - ViewLocationFormats = _supplementedViewLocations.Select(x => templateFolder + x).ToArray(); - PartialViewLocationFormats = _supplementedPartialViewLocations.Select(x => templateFolder + x).ToArray(); - - AreaPartialViewLocationFormats = Array.Empty(); - AreaViewLocationFormats = Array.Empty(); - - EnsureFoldersAndFiles(); - } + // /// + // /// Constructor + // /// + // public RenderViewEngine(IHostingEnvironment hostingEnvironment) + // { + // _hostingEnvironment = hostingEnvironment ?? throw new ArgumentNullException(nameof(hostingEnvironment)); + // + // const string templateFolder = Constants.ViewLocation; + // + // // the Render view engine doesn't support Area's so make those blank + // ViewLocationFormats = _supplementedViewLocations.Select(x => templateFolder + x).ToArray(); + // PartialViewLocationFormats = _supplementedPartialViewLocations.Select(x => templateFolder + x).ToArray(); + // + // AreaPartialViewLocationFormats = Array.Empty(); + // AreaViewLocationFormats = Array.Empty(); + // + // EnsureFoldersAndFiles(); + // } /// /// Ensures that the correct web.config for razor exists in the /Views folder, the partials folder exist and the ViewStartPage exists. diff --git a/src/Umbraco.Web/Mvc/PluginViewEngine.cs b/src/Umbraco.Web/Mvc/PluginViewEngine.cs deleted file mode 100644 index aa81cb9a57..0000000000 --- a/src/Umbraco.Web/Mvc/PluginViewEngine.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System.IO; -using System.Linq; -using System.Web.Mvc; -using Umbraco.Web.Composing; - -namespace Umbraco.Web.Mvc -{ - /// - /// A view engine to look into the App_Plugins folder for views for packaged controllers - /// - public class PluginViewEngine : RazorViewEngine - { - - /// - /// Constructor - /// - public PluginViewEngine() - { - SetViewLocations(); - } - - private void SetViewLocations() - { - //these are the originals: - - //base.AreaViewLocationFormats = new string[] { "~/Areas/{2}/Views/{1}/{0}.cshtml", "~/Areas/{2}/Views/{1}/{0}.vbhtml", "~/Areas/{2}/Views/Shared/{0}.cshtml", "~/Areas/{2}/Views/Shared/{0}.vbhtml" }; - //base.AreaMasterLocationFormats = new string[] { "~/Areas/{2}/Views/{1}/{0}.cshtml", "~/Areas/{2}/Views/{1}/{0}.vbhtml", "~/Areas/{2}/Views/Shared/{0}.cshtml", "~/Areas/{2}/Views/Shared/{0}.vbhtml" }; - //base.AreaPartialViewLocationFormats = new string[] { "~/Areas/{2}/Views/{1}/{0}.cshtml", "~/Areas/{2}/Views/{1}/{0}.vbhtml", "~/Areas/{2}/Views/Shared/{0}.cshtml", "~/Areas/{2}/Views/Shared/{0}.vbhtml" }; - //base.ViewLocationFormats = new string[] { "~/Views/{1}/{0}.cshtml", "~/Views/{1}/{0}.vbhtml", "~/Views/Shared/{0}.cshtml", "~/Views/Shared/{0}.vbhtml" }; - //base.MasterLocationFormats = new string[] { "~/Views/{1}/{0}.cshtml", "~/Views/{1}/{0}.vbhtml", "~/Views/Shared/{0}.cshtml", "~/Views/Shared/{0}.vbhtml" }; - //base.PartialViewLocationFormats = new string[] { "~/Views/{1}/{0}.cshtml", "~/Views/{1}/{0}.vbhtml", "~/Views/Shared/{0}.cshtml", "~/Views/Shared/{0}.vbhtml" }; - //base.FileExtensions = new string[] { "cshtml", "vbhtml" }; - - var viewLocationsArray = new[] - { - string.Concat(Core.Constants.SystemDirectories.AppPlugins, "/{2}/Views/{1}/{0}.cshtml"), - }; - - //set all of the area view locations to the plugin folder - AreaViewLocationFormats = viewLocationsArray - .Concat(new[] - { - string.Concat(Core.Constants.SystemDirectories.AppPlugins, "/{2}/Views/Shared/{0}.cshtml"), - }) - .ToArray(); - - AreaMasterLocationFormats = viewLocationsArray; - - AreaPartialViewLocationFormats = new[] - { - //will be used when we have partial view and child action macros - string.Concat(Core.Constants.SystemDirectories.AppPlugins, "/{2}/Views/Partials/{0}.cshtml"), - string.Concat(Core.Constants.SystemDirectories.AppPlugins, "/{2}/Views/MacroPartials/{0}.cshtml"), - //for partialsCurrent. - string.Concat(Core.Constants.SystemDirectories.AppPlugins, "/{2}/Views/{1}/{0}.cshtml"), - string.Concat(Core.Constants.SystemDirectories.AppPlugins, "/{2}/Views/Shared/{0}.cshtml"), - }; - - } - - /// - /// Ensures that the correct web.config for razor exists in the /Views folder. - /// - private void EnsureFolderAndWebConfig(ViewEngineResult result) - { - if (result.View == null) return; - var razorResult = result.View as RazorView; - if (razorResult == null) return; - - var folder = Path.GetDirectoryName(Current.IOHelper.MapPath(razorResult.ViewPath)); - //now we need to get the /View/ folder - var viewFolder = folder.Substring(0, folder.LastIndexOf("\\Views\\")) + "\\Views"; - - //ensure the web.config file is in the ~/Views folder - Directory.CreateDirectory(viewFolder); - if (!File.Exists(Path.Combine(viewFolder, "web.config"))) - { - using (var writer = File.CreateText(Path.Combine(viewFolder, "web.config"))) - { - writer.Write(Strings.WebConfigTemplate); - } - } - } - - public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) - { - var result = base.FindView(controllerContext, viewName, masterName, useCache); - EnsureFolderAndWebConfig(result); - return result; - } - - public override ViewEngineResult FindPartialView(ControllerContext controllerContext, string partialViewName, bool useCache) - { - var result = base.FindPartialView(controllerContext, partialViewName, useCache); - EnsureFolderAndWebConfig(result); - return result; - } - } -} diff --git a/src/Umbraco.Web/Mvc/ProfilingViewEngine.cs b/src/Umbraco.Web/Mvc/ProfilingViewEngine.cs deleted file mode 100644 index 097434541c..0000000000 --- a/src/Umbraco.Web/Mvc/ProfilingViewEngine.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System.Web.Mvc; -using Umbraco.Web.Composing; - -namespace Umbraco.Web.Mvc -{ - public class ProfilingViewEngine: IViewEngine - { - internal readonly IViewEngine Inner; - private readonly string _name; - - public ProfilingViewEngine(IViewEngine inner) - { - Inner = inner; - _name = inner.GetType().Name; - } - - public ViewEngineResult FindPartialView(ControllerContext controllerContext, string partialViewName, bool useCache) - { - using (Current.Profiler.Step(string.Format("{0}.FindPartialView, {1}, {2}", _name, partialViewName, useCache))) - { - return WrapResult(Inner.FindPartialView(controllerContext, partialViewName, useCache)); - } - } - - public ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) - { - using (Current.Profiler.Step(string.Format("{0}.FindView, {1}, {2}, {3}", _name, viewName, masterName, useCache))) - { - return WrapResult(Inner.FindView(controllerContext, viewName, masterName, useCache)); - } - } - - private static ViewEngineResult WrapResult(ViewEngineResult innerResult) - { - var profiledResult = innerResult.View != null ? - new ViewEngineResult(new ProfilingView(innerResult.View), innerResult.ViewEngine) : - new ViewEngineResult(innerResult.SearchedLocations); - return profiledResult; - } - - public void ReleaseView(ControllerContext controllerContext, IView view) - { - using (Current.Profiler.Step(string.Format("{0}.ReleaseView, {1}", _name, view.GetType().Name))) - { - Inner.ReleaseView(controllerContext, view); - } - } - } -} diff --git a/src/Umbraco.Web/Runtime/WebInitialComponent.cs b/src/Umbraco.Web/Runtime/WebInitialComponent.cs index d02ccdd01e..10623a1ed8 100644 --- a/src/Umbraco.Web/Runtime/WebInitialComponent.cs +++ b/src/Umbraco.Web/Runtime/WebInitialComponent.cs @@ -78,7 +78,7 @@ namespace Umbraco.Web.Runtime viewEngines.Clear(); foreach (var engine in originalEngines) { - var wrappedEngine = engine is ProfilingViewEngine ? engine : new ProfilingViewEngine(engine); + var wrappedEngine = engine;// TODO introduce in NETCORE: is ProfilingViewEngine ? engine : new ProfilingViewEngine(engine); viewEngines.Add(wrappedEngine); } } @@ -95,7 +95,7 @@ namespace Umbraco.Web.Runtime // set the render & plugin view engines ViewEngines.Engines.Add(new RenderViewEngine(_hostingEnvironment)); ViewEngines.Engines.Add(new PluginViewEngine()); - + ////add the profiling action filter //GlobalFilters.Filters.Add(new ProfilingActionFilter()); diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index a881e3f704..0d23f8d83b 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -230,7 +230,6 @@ - @@ -295,7 +294,6 @@ - @@ -316,7 +314,6 @@ - From 8e44d89856f31a459c618c9c97f53077d3ebbccd Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Tue, 3 Nov 2020 09:02:15 +0100 Subject: [PATCH 42/56] Introducing interface for our needs of a CronTabParser. And inject it where needed Signed-off-by: Bjarke Berg --- .../Configuration/ICronTabParser.cs | 10 ++++++ .../Validation/ConfigurationValidatorBase.cs | 10 ------ .../HealthChecksSettingsValidator.cs | 19 +++++++++++ src/Umbraco.Core/StringExtensions.cs | 20 ------------ .../HealthCheckSettingsExtensions.cs | 6 ++-- .../Configuration/NCronTabParser.cs | 24 ++++++++++++++ .../HostedServices/HealthCheckNotifier.cs | 8 +++-- .../Runtime/CoreInitialComposer.cs | 4 ++- .../HealthCheckSettingsExtensionsTests.cs | 7 ++-- .../HealthChecksSettingsValidatorTests.cs | 5 +-- .../Configurations/NCronTabParserTests.cs | 32 +++++++++++++++++++ .../StringExtensionsTests.cs | 9 ------ .../HealthCheckNotifierTests.cs | 3 +- 13 files changed, 106 insertions(+), 51 deletions(-) create mode 100644 src/Umbraco.Core/Configuration/ICronTabParser.cs create mode 100644 src/Umbraco.Infrastructure/Configuration/NCronTabParser.cs create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Core/Configurations/NCronTabParserTests.cs diff --git a/src/Umbraco.Core/Configuration/ICronTabParser.cs b/src/Umbraco.Core/Configuration/ICronTabParser.cs new file mode 100644 index 0000000000..2238be4a4c --- /dev/null +++ b/src/Umbraco.Core/Configuration/ICronTabParser.cs @@ -0,0 +1,10 @@ +using System; + +namespace Umbraco.Core.Configuration +{ + public interface ICronTabParser + { + bool IsValidCronTab(string cronTab); + DateTime GetNextOccurrence(string cronTab, DateTime time); + } +} diff --git a/src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidatorBase.cs b/src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidatorBase.cs index 343ba5656b..6c0af9802b 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidatorBase.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/ConfigurationValidatorBase.cs @@ -42,17 +42,7 @@ namespace Umbraco.Core.Configuration.Models.Validation return true; } - public bool ValidateOptionalCronTab(string configPath, string value, out string message) - { - if (!string.IsNullOrEmpty(value) && !value.IsValidCronTab()) - { - message = $"Configuration entry {configPath} contains an invalid cron expression."; - return false; - } - message = string.Empty; - return true; - } } } diff --git a/src/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidator.cs b/src/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidator.cs index 9ecb6fb118..f26fce9bd9 100644 --- a/src/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidator.cs +++ b/src/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidator.cs @@ -4,6 +4,13 @@ namespace Umbraco.Core.Configuration.Models.Validation { public class HealthChecksSettingsValidator : ConfigurationValidatorBase, IValidateOptions { + private readonly ICronTabParser _cronTabParser; + + public HealthChecksSettingsValidator(ICronTabParser cronTabParser) + { + _cronTabParser = cronTabParser; + } + public ValidateOptionsResult Validate(string name, HealthChecksSettings options) { if (!ValidateNotificationFirstRunTime(options.Notification.FirstRunTime, out var message)) @@ -18,5 +25,17 @@ namespace Umbraco.Core.Configuration.Models.Validation { return ValidateOptionalCronTab($"{Constants.Configuration.ConfigHealthChecks}:{nameof(HealthChecksSettings.Notification)}:{nameof(HealthChecksSettings.Notification.FirstRunTime)}", value, out message); } + + public bool ValidateOptionalCronTab(string configPath, string value, out string message) + { + if (!string.IsNullOrEmpty(value) && !_cronTabParser.IsValidCronTab(value)) + { + message = $"Configuration entry {configPath} contains an invalid cron expression."; + return false; + } + + message = string.Empty; + return true; + } } } diff --git a/src/Umbraco.Core/StringExtensions.cs b/src/Umbraco.Core/StringExtensions.cs index 0cf8158518..67b0b49a45 100644 --- a/src/Umbraco.Core/StringExtensions.cs +++ b/src/Umbraco.Core/StringExtensions.cs @@ -1478,25 +1478,5 @@ namespace Umbraco.Core { return shortStringHelper.CleanStringForSafeFileName(text, culture); } - - /// - /// Validates a string matches a cron tab (for length only). - /// - /// String with timespan representation (in cron tab format: https://github.com/atifaziz/NCrontab/wiki/Crontab-Expression) - /// True if string matches a valid cron expression, false if not. - /// - /// Considering an expression as valid if it's supported by https://github.com/atifaziz/NCrontab/wiki/Crontab-Expression, - /// so only 5 or 6 values are expected. - /// - public static bool IsValidCronTab(this string input) - { - if (string.IsNullOrEmpty(input)) - { - return false; - } - - var parts = input.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); - return parts.Length == 5 || parts.Length == 6; - } } } diff --git a/src/Umbraco.Infrastructure/Configuration/Extensions/HealthCheckSettingsExtensions.cs b/src/Umbraco.Infrastructure/Configuration/Extensions/HealthCheckSettingsExtensions.cs index 57ae58928d..92c3608ac1 100644 --- a/src/Umbraco.Infrastructure/Configuration/Extensions/HealthCheckSettingsExtensions.cs +++ b/src/Umbraco.Infrastructure/Configuration/Extensions/HealthCheckSettingsExtensions.cs @@ -1,12 +1,13 @@ using System; using NCrontab; +using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; namespace Umbraco.Infrastructure.Configuration.Extensions { public static class HealthCheckSettingsExtensions { - public static TimeSpan GetNotificationDelay(this HealthChecksSettings settings, DateTime now, TimeSpan defaultDelay) + public static TimeSpan GetNotificationDelay(this HealthChecksSettings settings, ICronTabParser cronTabParser, DateTime now, TimeSpan defaultDelay) { // If first run time not set, start with just small delay after application start. var firstRunTime = settings.Notification.FirstRunTime; @@ -17,8 +18,7 @@ namespace Umbraco.Infrastructure.Configuration.Extensions else { // Otherwise start at scheduled time according to cron expression, unless within the default delay period. - var firstRunTimeCronExpression = CrontabSchedule.Parse(firstRunTime); - var firstRunOccurance = firstRunTimeCronExpression.GetNextOccurrence(now); + var firstRunOccurance = cronTabParser.GetNextOccurrence(firstRunTime, now); var delay = firstRunOccurance - now; return delay < defaultDelay ? defaultDelay diff --git a/src/Umbraco.Infrastructure/Configuration/NCronTabParser.cs b/src/Umbraco.Infrastructure/Configuration/NCronTabParser.cs new file mode 100644 index 0000000000..5642c882e6 --- /dev/null +++ b/src/Umbraco.Infrastructure/Configuration/NCronTabParser.cs @@ -0,0 +1,24 @@ +using System; +using NCrontab; + +namespace Umbraco.Core.Configuration +{ + + public class NCronTabParser : ICronTabParser + { + public bool IsValidCronTab(string cronTab) + { + var result = CrontabSchedule.TryParse(cronTab); + + return !(result is null); + } + + public DateTime GetNextOccurrence(string cronTab, DateTime time) + { + var result = CrontabSchedule.Parse(cronTab); + + return result.GetNextOccurrence(time); + } + } + +} diff --git a/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs b/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs index c3cd2864dc..58decb80c4 100644 --- a/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs +++ b/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core; +using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.HealthCheck; using Umbraco.Core.Logging; @@ -39,9 +40,10 @@ namespace Umbraco.Infrastructure.HostedServices IMainDom mainDom, IScopeProvider scopeProvider, ILogger logger, - IProfilingLogger profilingLogger) + IProfilingLogger profilingLogger, + ICronTabParser cronTabParser) : base(healthChecksSettings.Value.Notification.Period, - healthChecksSettings.Value.GetNotificationDelay(DateTime.Now, DefaultDelay)) + healthChecksSettings.Value.GetNotificationDelay(cronTabParser, DateTime.Now, DefaultDelay)) { _healthChecksSettings = healthChecksSettings.Value; _healthChecks = healthChecks; @@ -53,7 +55,7 @@ namespace Umbraco.Infrastructure.HostedServices _logger = logger; _profilingLogger = profilingLogger; } - + internal override async Task PerformExecuteAsync(object state) { if (_healthChecksSettings.Notification.Enabled == false) diff --git a/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs b/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs index 01bfb79e26..ca282fc6ab 100644 --- a/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs +++ b/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs @@ -208,7 +208,7 @@ namespace Umbraco.Core.Runtime // Config manipulator composition.Services.AddUnique(); - + // register the umbraco context factory // composition.Services.AddUnique(); composition.Services.AddUnique(); @@ -370,6 +370,8 @@ namespace Umbraco.Core.Runtime composition.Services.AddUnique(); composition.Services.AddUnique(); + + composition.Services.AddUnique(); } } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensionsTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensionsTests.cs index d1819fd83e..833e5c865b 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensionsTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Extensions/HealthCheckSettingsExtensionsTests.cs @@ -1,5 +1,6 @@ using System; using NUnit.Framework; +using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Infrastructure.Configuration.Extensions; @@ -8,6 +9,8 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Extensions [TestFixture] public class HealthCheckSettingsExtensionsTests { + private ICronTabParser CronTabParser => new NCronTabParser(); + [TestCase("30 12 * * *", 30)] [TestCase("15 18 * * *", 60 * 6 + 15)] [TestCase("0 3 * * *", 60 * 15)] @@ -23,7 +26,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Extensions } }; var now = new DateTime(2020, 10, 31, 12, 0, 0); - var result = settings.GetNotificationDelay(now, TimeSpan.Zero); + var result = settings.GetNotificationDelay(CronTabParser, now, TimeSpan.Zero); Assert.AreEqual(expectedDelayInMinutes, result.TotalMinutes); } @@ -38,7 +41,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Extensions } }; var now = new DateTime(2020, 10, 31, 12, 25, 0); - var result = settings.GetNotificationDelay(now, TimeSpan.FromMinutes(10)); + var result = settings.GetNotificationDelay(CronTabParser, now, TimeSpan.FromMinutes(10)); Assert.AreEqual(10, result.TotalMinutes); } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidatorTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidatorTests.cs index d38b41720e..64a8be79a8 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidatorTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configuration/Models/Validation/HealthChecksSettingsValidatorTests.cs @@ -1,5 +1,6 @@ using System; using NUnit.Framework; +using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Configuration.Models.Validation; @@ -11,7 +12,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation [Test] public void Returns_Success_ForValid_Configuration() { - var validator = new HealthChecksSettingsValidator(); + var validator = new HealthChecksSettingsValidator(new NCronTabParser()); var options = BuildHealthChecksSettings(); var result = validator.Validate("settings", options); Assert.True(result.Succeeded); @@ -20,7 +21,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configuration.Models.Validation [Test] public void Returns_Fail_For_Configuration_With_Invalid_Notification_FirstRunTime() { - var validator = new HealthChecksSettingsValidator(); + var validator = new HealthChecksSettingsValidator(new NCronTabParser()); var options = BuildHealthChecksSettings(firstRunTime: "0 3 *"); var result = validator.Validate("settings", options); Assert.False(result.Succeeded); diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configurations/NCronTabParserTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configurations/NCronTabParserTests.cs new file mode 100644 index 0000000000..4a38de831d --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Configurations/NCronTabParserTests.cs @@ -0,0 +1,32 @@ +using NUnit.Framework; +using Umbraco.Core.Configuration; + +namespace Umbraco.Tests.UnitTests.Umbraco.Core.Configurations +{ + [TestFixture] + public class NCronTabParserTests + { + private ICronTabParser Sut => new NCronTabParser(); + + [TestCase("", ExpectedResult = false)] + [TestCase("* * * * 1", ExpectedResult = true)] + [TestCase("* * * * * 1", ExpectedResult = false)] + [TestCase("* * * 1", ExpectedResult = false)] + [TestCase("Invalid", ExpectedResult = false)] + [TestCase("I n v a l", ExpectedResult = false)] + [TestCase("23 0-20/2 * * *", ExpectedResult = true)] + [TestCase("5 4 * * sun", ExpectedResult = true)] + [TestCase("0 0,12 1 */2 *", ExpectedResult = true)] + [TestCase("0 0 1,15 * 3", ExpectedResult = true)] + [TestCase("5 0 * 8 *", ExpectedResult = true)] + [TestCase("22 * * 1-5 *", ExpectedResult = true)] + [TestCase("23 0-20/2 * * *", ExpectedResult = true)] + [TestCase("23 0-20/2 * * sun-sat", ExpectedResult = true)] + [TestCase("23 0-20/2 * jan-dec sun-sat", ExpectedResult = true)] + [TestCase("* * 32 * *", ExpectedResult = false)] + public bool IsValidCronTab(string input) + { + return Sut.IsValidCronTab(input); + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/ShortStringHelper/StringExtensionsTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/ShortStringHelper/StringExtensionsTests.cs index 427ae532f5..03c84a03b8 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/ShortStringHelper/StringExtensionsTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/ShortStringHelper/StringExtensionsTests.cs @@ -301,14 +301,5 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Core.ShortStringHelper Assert.AreEqual(expected, output); } - [TestCase("", false)] - [TestCase("* * * * 1", true)] - [TestCase("* * * * * 1", true)] - [TestCase("* * * 1", false)] - public void IsValidCronTab(string input, bool expected) - { - var result = input.IsValidCronTab(); - Assert.AreEqual(expected, result); - } } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs index bbbb4035c5..6c1284854e 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs @@ -7,6 +7,7 @@ using Microsoft.Extensions.Options; using Moq; using NUnit.Framework; using Umbraco.Core; +using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.HealthCheck; using Umbraco.Core.Logging; @@ -141,7 +142,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices return new HealthCheckNotifier(Options.Create(settings), checks, notifications, mockRunTimeState.Object, mockServerRegistrar.Object, mockMainDom.Object, mockScopeProvider.Object, - mockLogger.Object, mockProfilingLogger.Object); + mockLogger.Object, mockProfilingLogger.Object, Mock.Of()); } private void VerifyNotificationsNotSent() From 94b9f7453c58b45dd6a226c365e1d61312b5b4cb Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Tue, 3 Nov 2020 11:20:51 +0100 Subject: [PATCH 43/56] Fix boot issue, because hosted services uses IServerMessenger that uses ISqlContext before the db is ready Signed-off-by: Bjarke Berg --- .../BatchedDatabaseServerMessenger.cs | 3 +-- .../HostedServices/HealthCheckNotifier.cs | 2 +- .../Runtime/CoreInitialComposer.cs | 4 ++-- .../Sync/DatabaseServerMessenger.cs | 9 +++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Infrastructure/BatchedDatabaseServerMessenger.cs b/src/Umbraco.Infrastructure/BatchedDatabaseServerMessenger.cs index 693246257a..e022219d15 100644 --- a/src/Umbraco.Infrastructure/BatchedDatabaseServerMessenger.cs +++ b/src/Umbraco.Infrastructure/BatchedDatabaseServerMessenger.cs @@ -31,7 +31,6 @@ namespace Umbraco.Web IMainDom mainDom, IUmbracoDatabaseFactory databaseFactory, IScopeProvider scopeProvider, - ISqlContext sqlContext, IProfilingLogger proflog, ILogger logger, IServerRegistrar serverRegistrar, @@ -40,7 +39,7 @@ namespace Umbraco.Web CacheRefresherCollection cacheRefreshers, IRequestCache requestCache, IRequestAccessor requestAccessor) - : base(mainDom, scopeProvider, sqlContext, proflog, logger, serverRegistrar, true, options, hostingEnvironment, cacheRefreshers) + : base(mainDom, scopeProvider, databaseFactory, proflog, logger, serverRegistrar, true, options, hostingEnvironment, cacheRefreshers) { _databaseFactory = databaseFactory; _requestCache = requestCache; diff --git a/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs b/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs index c42892101a..41de4d4cf3 100644 --- a/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs +++ b/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs @@ -53,7 +53,7 @@ namespace Umbraco.Infrastructure.HostedServices _logger = logger; _profilingLogger = profilingLogger; } - + internal override async Task PerformExecuteAsync(object state) { if (_healthChecksSettings.Notification.Enabled == false) diff --git a/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs b/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs index 01bfb79e26..c6745103b0 100644 --- a/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs +++ b/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs @@ -150,7 +150,7 @@ namespace Umbraco.Core.Runtime => new DatabaseServerMessenger( factory.GetRequiredService(), factory.GetRequiredService(), - factory.GetRequiredService(), + factory.GetRequiredService(), factory.GetRequiredService(), factory.GetRequiredService>(), factory.GetRequiredService(), @@ -208,7 +208,7 @@ namespace Umbraco.Core.Runtime // Config manipulator composition.Services.AddUnique(); - + // register the umbraco context factory // composition.Services.AddUnique(); composition.Services.AddUnique(); diff --git a/src/Umbraco.Infrastructure/Sync/DatabaseServerMessenger.cs b/src/Umbraco.Infrastructure/Sync/DatabaseServerMessenger.cs index 16a83f45fe..7066e5d806 100644 --- a/src/Umbraco.Infrastructure/Sync/DatabaseServerMessenger.cs +++ b/src/Umbraco.Infrastructure/Sync/DatabaseServerMessenger.cs @@ -30,13 +30,14 @@ namespace Umbraco.Core.Sync public class DatabaseServerMessenger : ServerMessengerBase, IDatabaseServerMessenger { private readonly IMainDom _mainDom; + private readonly IUmbracoDatabaseFactory _umbracoDatabaseFactory; private readonly ManualResetEvent _syncIdle; private readonly object _locko = new object(); private readonly IProfilingLogger _profilingLogger; private readonly IServerRegistrar _serverRegistrar; private readonly IHostingEnvironment _hostingEnvironment; private readonly CacheRefresherCollection _cacheRefreshers; - private readonly ISqlContext _sqlContext; + private readonly Lazy _distCacheFilePath; private int _lastId = -1; private DateTime _lastSync; @@ -48,13 +49,13 @@ namespace Umbraco.Core.Sync public DatabaseServerMessengerOptions Options { get; } public DatabaseServerMessenger( - IMainDom mainDom, IScopeProvider scopeProvider, ISqlContext sqlContext, IProfilingLogger proflog, ILogger logger, IServerRegistrar serverRegistrar, + IMainDom mainDom, IScopeProvider scopeProvider, IUmbracoDatabaseFactory umbracoDatabaseFactory, IProfilingLogger proflog, ILogger logger, IServerRegistrar serverRegistrar, bool distributedEnabled, DatabaseServerMessengerOptions options, IHostingEnvironment hostingEnvironment, CacheRefresherCollection cacheRefreshers) : base(distributedEnabled) { ScopeProvider = scopeProvider ?? throw new ArgumentNullException(nameof(scopeProvider)); - _sqlContext = sqlContext; _mainDom = mainDom; + _umbracoDatabaseFactory = umbracoDatabaseFactory; _profilingLogger = proflog ?? throw new ArgumentNullException(nameof(proflog)); _serverRegistrar = serverRegistrar; _hostingEnvironment = hostingEnvironment; @@ -77,7 +78,7 @@ namespace Umbraco.Core.Sync protected IScopeProvider ScopeProvider { get; } - protected Sql Sql() => _sqlContext.Sql(); + protected Sql Sql() => _umbracoDatabaseFactory.SqlContext.Sql(); private string DistCacheFilePath => _distCacheFilePath.Value; From aefb596b4b35925a9bcc5e5d85b8cd0a4430951c Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Tue, 3 Nov 2020 14:14:01 +0100 Subject: [PATCH 44/56] More viewengine migration. Including wrapping in profiler etcs Signed-off-by: Bjarke Berg --- .../Constants-SystemDirectories.cs | 2 +- ...ewEngineWrapperMvcViewOptionsSetupTests.cs | 75 +++++++++++++++++++ .../Runtimes/WebRuntimeComponentTests.cs | 66 ---------------- src/Umbraco.Tests/Umbraco.Tests.csproj | 1 - src/Umbraco.Web.UI.NetCore/appsettings.json | 2 +- .../Extensions/ActionContextExtensions.cs | 12 +-- ...racoWebstiteServiceCollectionExtensions.cs | 20 ++++- .../ViewEngines/IPluginViewEngine.cs | 8 ++ .../ViewEngines/IRenderViewEngine.cs | 8 ++ .../ViewEngines/PluginMvcViewOptionsSetup.cs | 26 +++++++ .../ViewEngines/PluginViewEngine.cs | 2 +- ...ingViewEngineWrapperMvcViewOptionsSetup.cs | 43 +++++++++++ .../ViewEngines/RenderMvcViewOptionsSetup.cs | 26 +++++++ .../ViewEngines/RenderViewEngine.cs | 54 ++++--------- .../Mvc/ControllerContextExtensions.cs | 2 +- .../Runtime/WebInitialComponent.cs | 4 +- 16 files changed, 225 insertions(+), 126 deletions(-) create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Web.Website/ViewEngines/ProfilingViewEngineWrapperMvcViewOptionsSetupTests.cs delete mode 100644 src/Umbraco.Tests/Runtimes/WebRuntimeComponentTests.cs create mode 100644 src/Umbraco.Web.Website/ViewEngines/IPluginViewEngine.cs create mode 100644 src/Umbraco.Web.Website/ViewEngines/IRenderViewEngine.cs create mode 100644 src/Umbraco.Web.Website/ViewEngines/PluginMvcViewOptionsSetup.cs create mode 100644 src/Umbraco.Web.Website/ViewEngines/ProfilingViewEngineWrapperMvcViewOptionsSetup.cs create mode 100644 src/Umbraco.Web.Website/ViewEngines/RenderMvcViewOptionsSetup.cs diff --git a/src/Umbraco.Core/Constants-SystemDirectories.cs b/src/Umbraco.Core/Constants-SystemDirectories.cs index 53e14bb6ec..d4ca2a3c57 100644 --- a/src/Umbraco.Core/Constants-SystemDirectories.cs +++ b/src/Umbraco.Core/Constants-SystemDirectories.cs @@ -20,7 +20,7 @@ public const string AppCode = "~/App_Code"; - public const string AppPlugins = "~/App_Plugins"; + public const string AppPlugins = "/App_Plugins"; public const string MvcViews = "~/Views"; diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Web.Website/ViewEngines/ProfilingViewEngineWrapperMvcViewOptionsSetupTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Website/ViewEngines/ProfilingViewEngineWrapperMvcViewOptionsSetupTests.cs new file mode 100644 index 0000000000..a74431b705 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Website/ViewEngines/ProfilingViewEngineWrapperMvcViewOptionsSetupTests.cs @@ -0,0 +1,75 @@ +using Microsoft.AspNetCore.Mvc; +using Moq; +using NUnit.Framework; +using Umbraco.Core.Logging; +using Umbraco.Web.Website.ViewEngines; + +namespace Umbraco.Tests.Runtimes +{ + [TestFixture] + public class ProfilingViewEngineWrapperMvcViewOptionsSetupTests + { + private ProfilingViewEngineWrapperMvcViewOptionsSetup Sut => + new ProfilingViewEngineWrapperMvcViewOptionsSetup(Mock.Of()); + [Test] + public void WrapViewEngines_HasEngines_WrapsAll() + { + var options = new MvcViewOptions() + { + ViewEngines = + { + Mock.Of(), + Mock.Of(), + } + }; + + Sut.Configure(options); + + Assert.That(options.ViewEngines.Count, Is.EqualTo(2)); + Assert.That(options.ViewEngines[0], Is.InstanceOf()); + Assert.That(options.ViewEngines[1], Is.InstanceOf()); + } + + [Test] + public void WrapViewEngines_HasEngines_KeepsSortOrder() + { + var options = new MvcViewOptions() + { + ViewEngines = + { + Mock.Of(), + Mock.Of(), + } + }; + + Sut.Configure(options); + + Assert.That(options.ViewEngines.Count, Is.EqualTo(2)); + Assert.That(((ProfilingViewEngine)options.ViewEngines[0]).Inner, Is.InstanceOf()); + Assert.That(((ProfilingViewEngine)options.ViewEngines[1]).Inner, Is.InstanceOf()); + } + + [Test] + public void WrapViewEngines_HasProfiledEngine_AddsSameInstance() + { + var profiledEngine = new ProfilingViewEngine(Mock.Of(), Mock.Of()); + var options = new MvcViewOptions() + { + ViewEngines = + { + profiledEngine + } + }; + + Sut.Configure(options); + + Assert.That(options.ViewEngines[0], Is.SameAs(profiledEngine)); + } + + [Test] + public void WrapViewEngines_CollectionIsNull_DoesNotThrow() + { + Assert.DoesNotThrow(() => Sut.Configure(new MvcViewOptions())); + } + } +} diff --git a/src/Umbraco.Tests/Runtimes/WebRuntimeComponentTests.cs b/src/Umbraco.Tests/Runtimes/WebRuntimeComponentTests.cs deleted file mode 100644 index 42a0eeba54..0000000000 --- a/src/Umbraco.Tests/Runtimes/WebRuntimeComponentTests.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System.Collections.Generic; -using System.Web.Mvc; -using NUnit.Framework; -using NUnit.Framework.Internal; -using Umbraco.Tests.TestHelpers; -using Umbraco.Web.Mvc; -using Umbraco.Web.Runtime; - -namespace Umbraco.Tests.Runtimes -{ - [TestFixture] - public class WebRuntimeComponentTests - { - [Test] - public void WrapViewEngines_HasEngines_WrapsAll() - { - IList engines = new List - { - new RenderViewEngine(TestHelper.GetHostingEnvironment()), - new PluginViewEngine() - }; - - WebInitialComponent.WrapViewEngines(engines); - - Assert.That(engines.Count, Is.EqualTo(2)); - Assert.That(engines[0], Is.InstanceOf()); - Assert.That(engines[1], Is.InstanceOf()); - } - - [Test] - public void WrapViewEngines_HasEngines_KeepsSortOrder() - { - IList engines = new List - { - new RenderViewEngine(TestHelper.GetHostingEnvironment()), - new PluginViewEngine() - }; - - WebInitialComponent.WrapViewEngines(engines); - - Assert.That(engines.Count, Is.EqualTo(2)); - Assert.That(((ProfilingViewEngine)engines[0]).Inner, Is.InstanceOf()); - Assert.That(((ProfilingViewEngine)engines[1]).Inner, Is.InstanceOf()); - } - - [Test] - public void WrapViewEngines_HasProfiledEngine_AddsSameInstance() - { - var profiledEngine = new ProfilingViewEngine(new PluginViewEngine()); - IList engines = new List - { - profiledEngine - }; - - WebInitialComponent.WrapViewEngines(engines); - - Assert.That(engines[0], Is.SameAs(profiledEngine)); - } - - [Test] - public void WrapViewEngines_CollectionIsNull_DoesNotThrow() - { - Assert.DoesNotThrow(() => WebInitialComponent.WrapViewEngines(null)); - } - } -} diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 13e9cbeef1..58aa4ac7ec 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -217,7 +217,6 @@ - diff --git a/src/Umbraco.Web.UI.NetCore/appsettings.json b/src/Umbraco.Web.UI.NetCore/appsettings.json index 0d068bbd43..98dd77d9a1 100644 --- a/src/Umbraco.Web.UI.NetCore/appsettings.json +++ b/src/Umbraco.Web.UI.NetCore/appsettings.json @@ -38,7 +38,7 @@ "ConvertUrlsToAscii": "try" }, "RuntimeMinification": { - "dataFolder": "App_Data/TEMP/Smidge", + "dataFolder": "App_Data/TEMP/Smidge", "version": "1" }, "Security": { diff --git a/src/Umbraco.Web.Website/Extensions/ActionContextExtensions.cs b/src/Umbraco.Web.Website/Extensions/ActionContextExtensions.cs index 5a79fcf188..acb2ccbffa 100644 --- a/src/Umbraco.Web.Website/Extensions/ActionContextExtensions.cs +++ b/src/Umbraco.Web.Website/Extensions/ActionContextExtensions.cs @@ -11,19 +11,9 @@ namespace Umbraco.Extensions /// The action context. /// The name of the data token. /// The data token, or null. - /// MIGRAGED TO NETCORE AS EXTENSION ON HTTPCONTEXT internal static object GetDataTokenInViewContextHierarchy(this ActionContext actionContext, string dataTokenName) { - - var controllerActionDescriptor = actionContext.ActionDescriptor as ControllerActionDescriptor; - while (!(controllerActionDescriptor is null)) - { - object token; - if (actionContext.RouteData.DataTokens.TryGetValue(dataTokenName, out token)) - return token; - controllerActionDescriptor = controllerActionDescriptor.ParentActionViewContext; - } - return null; + return actionContext.RouteData.DataTokens.TryGetValue(dataTokenName, out var token) ? token : null; } } } diff --git a/src/Umbraco.Web.Website/Extensions/UmbracoWebstiteServiceCollectionExtensions.cs b/src/Umbraco.Web.Website/Extensions/UmbracoWebstiteServiceCollectionExtensions.cs index bdc9ee840c..b47679a1bf 100644 --- a/src/Umbraco.Web.Website/Extensions/UmbracoWebstiteServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Website/Extensions/UmbracoWebstiteServiceCollectionExtensions.cs @@ -1,5 +1,11 @@ -using Microsoft.AspNetCore.Mvc.Controllers; +using System.Collections.Generic; +using System.Linq; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Controllers; +using Microsoft.AspNetCore.Mvc.ViewEngines; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using Umbraco.Web.Website.ViewEngines; namespace Umbraco.Extensions { @@ -8,6 +14,18 @@ namespace Umbraco.Extensions public static void AddUmbracoWebsite(this IServiceCollection services) { services.AddSingleton(); + + // Set the render & plugin view engines (Super complicated, but this allows us to use the IServiceCollection + // to inject dependencies into the viewEngines) + services.AddTransient, RenderMvcViewOptionsSetup>(); + services.AddSingleton(); + services.AddTransient, PluginMvcViewOptionsSetup>(); + services.AddSingleton(); + + // Wraps all existing view engines in a ProfilerViewEngine + services.AddTransient, ProfilingViewEngineWrapperMvcViewOptionsSetup>(); + } + } } diff --git a/src/Umbraco.Web.Website/ViewEngines/IPluginViewEngine.cs b/src/Umbraco.Web.Website/ViewEngines/IPluginViewEngine.cs new file mode 100644 index 0000000000..4bcb7b5dc2 --- /dev/null +++ b/src/Umbraco.Web.Website/ViewEngines/IPluginViewEngine.cs @@ -0,0 +1,8 @@ +using Microsoft.AspNetCore.Mvc.Razor; + +namespace Umbraco.Web.Website.ViewEngines +{ + public interface IPluginViewEngine : IRazorViewEngine + { + } +} diff --git a/src/Umbraco.Web.Website/ViewEngines/IRenderViewEngine.cs b/src/Umbraco.Web.Website/ViewEngines/IRenderViewEngine.cs new file mode 100644 index 0000000000..6f21d21494 --- /dev/null +++ b/src/Umbraco.Web.Website/ViewEngines/IRenderViewEngine.cs @@ -0,0 +1,8 @@ +using Microsoft.AspNetCore.Mvc.Razor; + +namespace Umbraco.Web.Website.ViewEngines +{ + public interface IRenderViewEngine : IRazorViewEngine + { + } +} diff --git a/src/Umbraco.Web.Website/ViewEngines/PluginMvcViewOptionsSetup.cs b/src/Umbraco.Web.Website/ViewEngines/PluginMvcViewOptionsSetup.cs new file mode 100644 index 0000000000..cf703ddaca --- /dev/null +++ b/src/Umbraco.Web.Website/ViewEngines/PluginMvcViewOptionsSetup.cs @@ -0,0 +1,26 @@ +using System; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; + +namespace Umbraco.Web.Website.ViewEngines +{ + public class PluginMvcViewOptionsSetup : IConfigureOptions + { + private readonly IPluginViewEngine _pluginViewEngine; + + public PluginMvcViewOptionsSetup(IPluginViewEngine pluginViewEngine) + { + _pluginViewEngine = pluginViewEngine ?? throw new ArgumentNullException(nameof(pluginViewEngine)); + } + + public void Configure(MvcViewOptions options) + { + if (options == null) + { + throw new ArgumentNullException(nameof(options)); + } + + options.ViewEngines.Add(_pluginViewEngine); + } + } +} diff --git a/src/Umbraco.Web.Website/ViewEngines/PluginViewEngine.cs b/src/Umbraco.Web.Website/ViewEngines/PluginViewEngine.cs index 7c8deb9dd7..ac16be417a 100644 --- a/src/Umbraco.Web.Website/ViewEngines/PluginViewEngine.cs +++ b/src/Umbraco.Web.Website/ViewEngines/PluginViewEngine.cs @@ -9,7 +9,7 @@ namespace Umbraco.Web.Website.ViewEngines /// /// A view engine to look into the App_Plugins folder for views for packaged controllers /// - public class PluginViewEngine : RazorViewEngine + public class PluginViewEngine : RazorViewEngine, IPluginViewEngine { public PluginViewEngine( IRazorPageFactoryProvider pageFactory, diff --git a/src/Umbraco.Web.Website/ViewEngines/ProfilingViewEngineWrapperMvcViewOptionsSetup.cs b/src/Umbraco.Web.Website/ViewEngines/ProfilingViewEngineWrapperMvcViewOptionsSetup.cs new file mode 100644 index 0000000000..b8fbe1e527 --- /dev/null +++ b/src/Umbraco.Web.Website/ViewEngines/ProfilingViewEngineWrapperMvcViewOptionsSetup.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.ViewEngines; +using Microsoft.Extensions.Options; +using Umbraco.Core.Logging; + +namespace Umbraco.Web.Website.ViewEngines +{ + public class ProfilingViewEngineWrapperMvcViewOptionsSetup : IConfigureOptions + { + private readonly IProfiler _profiler; + + public ProfilingViewEngineWrapperMvcViewOptionsSetup(IProfiler profiler) + { + _profiler = profiler ?? throw new ArgumentNullException(nameof(profiler)); + } + + public void Configure(MvcViewOptions options) + { + if (options == null) + { + throw new ArgumentNullException(nameof(options)); + } + + WrapViewEngines(options.ViewEngines); + } + + private void WrapViewEngines(IList viewEngines) + { + if (viewEngines == null || viewEngines.Count == 0) return; + + var originalEngines = viewEngines.ToList(); + viewEngines.Clear(); + foreach (var engine in originalEngines) + { + var wrappedEngine = engine is ProfilingViewEngine ? engine : new ProfilingViewEngine(engine, _profiler); + viewEngines.Add(wrappedEngine); + } + } + } +} diff --git a/src/Umbraco.Web.Website/ViewEngines/RenderMvcViewOptionsSetup.cs b/src/Umbraco.Web.Website/ViewEngines/RenderMvcViewOptionsSetup.cs new file mode 100644 index 0000000000..d8ad58cc91 --- /dev/null +++ b/src/Umbraco.Web.Website/ViewEngines/RenderMvcViewOptionsSetup.cs @@ -0,0 +1,26 @@ +using System; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; + +namespace Umbraco.Web.Website.ViewEngines +{ + public class RenderMvcViewOptionsSetup : IConfigureOptions + { + private readonly IRenderViewEngine _renderViewEngine; + + public RenderMvcViewOptionsSetup(IRenderViewEngine renderViewEngine) + { + _renderViewEngine = renderViewEngine ?? throw new ArgumentNullException(nameof(renderViewEngine)); + } + + public void Configure(MvcViewOptions options) + { + if (options == null) + { + throw new ArgumentNullException(nameof(options)); + } + + options.ViewEngines.Add(_renderViewEngine); + } + } +} diff --git a/src/Umbraco.Web.Website/ViewEngines/RenderViewEngine.cs b/src/Umbraco.Web.Website/ViewEngines/RenderViewEngine.cs index 50e70b68a7..ea727a07f1 100644 --- a/src/Umbraco.Web.Website/ViewEngines/RenderViewEngine.cs +++ b/src/Umbraco.Web.Website/ViewEngines/RenderViewEngine.cs @@ -20,7 +20,7 @@ namespace Umbraco.Web.Website.ViewEngines /// A view engine to look into the template location specified in the config for the front-end/Rendering part of the cms, /// this includes paths to render partial macros and media item templates. /// - public class RenderViewEngine : RazorViewEngine + public class RenderViewEngine : RazorViewEngine, IRenderViewEngine { public RenderViewEngine( @@ -46,50 +46,22 @@ namespace Umbraco.Web.Website.ViewEngines "/MacroPartials/{0}.cshtml", "/{0}.cshtml" }, + AreaViewLocationFormats = + { + "/Partials/{0}.cshtml", + "/MacroPartials/{0}.cshtml", + "/{0}.cshtml" + } }); } public new ViewEngineResult FindView(ActionContext context, string viewName, bool isMainPage) { - return ShouldFindView(context, viewName, isMainPage) + return ShouldFindView(context, isMainPage) ? base.FindView(context, viewName, isMainPage) : ViewEngineResult.NotFound(viewName, Array.Empty()); } - // /// - // /// Constructor - // /// - // public RenderViewEngine(IHostingEnvironment hostingEnvironment) - // { - // _hostingEnvironment = hostingEnvironment ?? throw new ArgumentNullException(nameof(hostingEnvironment)); - // - // const string templateFolder = Constants.ViewLocation; - // - // // the Render view engine doesn't support Area's so make those blank - // ViewLocationFormats = _supplementedViewLocations.Select(x => templateFolder + x).ToArray(); - // PartialViewLocationFormats = _supplementedPartialViewLocations.Select(x => templateFolder + x).ToArray(); - // - // AreaPartialViewLocationFormats = Array.Empty(); - // AreaViewLocationFormats = Array.Empty(); - // - // EnsureFoldersAndFiles(); - // } - - - // public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) - // { - // return ShouldFindView(controllerContext, false) - // ? base.FindView(controllerContext, viewName, masterName, useCache) - // : new ViewEngineResult(new string[] { }); - // } - // - // public override ViewEngineResult FindPartialView(ControllerContext controllerContext, string partialViewName, bool useCache) - // { - // return ShouldFindView(controllerContext, true) - // ? base.FindPartialView(controllerContext, partialViewName, useCache) - // : new ViewEngineResult(new string[] { }); - // } - /// /// Determines if the view should be found, this is used for view lookup performance and also to ensure /// less overlap with other user's view engines. This will return true if the Umbraco back office is rendering @@ -98,14 +70,14 @@ namespace Umbraco.Web.Website.ViewEngines /// /// /// - private static bool ShouldFindView(ActionContext context, string viewName, bool isMainPage) + private static bool ShouldFindView(ActionContext context, bool isMainPage) { - var umbracoToken = context.GetDataTokenInViewContextHierarchy(Core.Constants.Web.UmbracoDataToken); - - context.ActionDescriptor. + //In v8, this was testing recursively into if it was a child action, but child action do not exist anymore, + //And my best guess is that it + context.RouteData.DataTokens.TryGetValue(Core.Constants.Web.UmbracoDataToken, out var umbracoToken); // first check if we're rendering a partial view for the back office, or surface controller, etc... // anything that is not ContentModel as this should only pertain to Umbraco views. - if (isPartial && !(umbracoToken is ContentModel)) + if (!isMainPage && !(umbracoToken is ContentModel)) return true; // only find views if we're rendering the umbraco front end diff --git a/src/Umbraco.Web/Mvc/ControllerContextExtensions.cs b/src/Umbraco.Web/Mvc/ControllerContextExtensions.cs index 7179f54c87..6442e1eb2a 100644 --- a/src/Umbraco.Web/Mvc/ControllerContextExtensions.cs +++ b/src/Umbraco.Web/Mvc/ControllerContextExtensions.cs @@ -22,7 +22,7 @@ namespace Umbraco.Web.Mvc /// The controller context. /// The name of the data token. /// The data token, or null. - /// MIGRAGED TO NETCORE AS EXTENSION ON ActionContext + /// MIGRATED TO NETCORE AS EXTENSION ON ActionContext internal static object GetDataTokenInViewContextHierarchy(this ControllerContext controllerContext, string dataTokenName) { var context = controllerContext; diff --git a/src/Umbraco.Web/Runtime/WebInitialComponent.cs b/src/Umbraco.Web/Runtime/WebInitialComponent.cs index 10623a1ed8..cddb04eac3 100644 --- a/src/Umbraco.Web/Runtime/WebInitialComponent.cs +++ b/src/Umbraco.Web/Runtime/WebInitialComponent.cs @@ -93,8 +93,8 @@ namespace Umbraco.Web.Runtime // ControllerBuilder.Current.SetControllerFactory(controllerFactory); // set the render & plugin view engines - ViewEngines.Engines.Add(new RenderViewEngine(_hostingEnvironment)); - ViewEngines.Engines.Add(new PluginViewEngine()); + // ViewEngines.Engines.Add(new RenderViewEngine(_hostingEnvironment)); + // ViewEngines.Engines.Add(new PluginViewEngine()); ////add the profiling action filter //GlobalFilters.Filters.Add(new ProfilingActionFilter()); From 1a4a72ee21267f489044b912761ef6e41e2874b5 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Tue, 3 Nov 2020 14:34:27 +0100 Subject: [PATCH 45/56] Cleanup Signed-off-by: Bjarke Berg --- .../Extensions/ActionContextExtensions.cs | 19 ------------------- .../Mvc/ControllerContextExtensions.cs | 1 - 2 files changed, 20 deletions(-) delete mode 100644 src/Umbraco.Web.Website/Extensions/ActionContextExtensions.cs diff --git a/src/Umbraco.Web.Website/Extensions/ActionContextExtensions.cs b/src/Umbraco.Web.Website/Extensions/ActionContextExtensions.cs deleted file mode 100644 index acb2ccbffa..0000000000 --- a/src/Umbraco.Web.Website/Extensions/ActionContextExtensions.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Controllers; - -namespace Umbraco.Extensions -{ - public static class ActionContextExtensions - { - /// - /// Recursively gets a data token from a controller context hierarchy. - /// - /// The action context. - /// The name of the data token. - /// The data token, or null. - internal static object GetDataTokenInViewContextHierarchy(this ActionContext actionContext, string dataTokenName) - { - return actionContext.RouteData.DataTokens.TryGetValue(dataTokenName, out var token) ? token : null; - } - } -} diff --git a/src/Umbraco.Web/Mvc/ControllerContextExtensions.cs b/src/Umbraco.Web/Mvc/ControllerContextExtensions.cs index 6442e1eb2a..4baaaac4fc 100644 --- a/src/Umbraco.Web/Mvc/ControllerContextExtensions.cs +++ b/src/Umbraco.Web/Mvc/ControllerContextExtensions.cs @@ -22,7 +22,6 @@ namespace Umbraco.Web.Mvc /// The controller context. /// The name of the data token. /// The data token, or null. - /// MIGRATED TO NETCORE AS EXTENSION ON ActionContext internal static object GetDataTokenInViewContextHierarchy(this ControllerContext controllerContext, string dataTokenName) { var context = controllerContext; From 5104430879994fd0fca4a13b39382630965649d1 Mon Sep 17 00:00:00 2001 From: Elitsa Marinovska Date: Tue, 3 Nov 2020 16:36:09 +0100 Subject: [PATCH 46/56] Changing the way we register json converters globally --- .../Formatters/AngularJsonMediaTypeFormatter.cs | 12 ++++++++++-- .../ModelBinding/UmbracoJsonModelBinderProvider.cs | 6 ------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.Common/Formatters/AngularJsonMediaTypeFormatter.cs b/src/Umbraco.Web.Common/Formatters/AngularJsonMediaTypeFormatter.cs index d3e5882688..3dd5e8330f 100644 --- a/src/Umbraco.Web.Common/Formatters/AngularJsonMediaTypeFormatter.cs +++ b/src/Umbraco.Web.Common/Formatters/AngularJsonMediaTypeFormatter.cs @@ -4,7 +4,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Formatters; using Newtonsoft.Json; using Newtonsoft.Json.Converters; -using Newtonsoft.Json.Serialization; +using Umbraco.Core.Serialization; namespace Umbraco.Web.Common.Formatters { @@ -19,7 +19,7 @@ namespace Umbraco.Web.Common.Formatters public const string XsrfPrefix = ")]}',\n"; public AngularJsonMediaTypeFormatter(JsonSerializerSettings serializerSettings, ArrayPool charPool, MvcOptions mvcOptions) - : base(serializerSettings, charPool, mvcOptions) + : base(RegisterJsonConverters(serializerSettings), charPool, mvcOptions) { } @@ -32,5 +32,13 @@ namespace Umbraco.Web.Common.Formatters return jsonWriter; } + + protected static JsonSerializerSettings RegisterJsonConverters(JsonSerializerSettings serializerSettings) + { + serializerSettings.Converters.Add(new StringEnumConverter()); + serializerSettings.Converters.Add(new UdiJsonConverter()); + + return serializerSettings; + } } } diff --git a/src/Umbraco.Web.Common/ModelBinding/UmbracoJsonModelBinderProvider.cs b/src/Umbraco.Web.Common/ModelBinding/UmbracoJsonModelBinderProvider.cs index 5543d05d3e..7ec61656fb 100644 --- a/src/Umbraco.Web.Common/ModelBinding/UmbracoJsonModelBinderProvider.cs +++ b/src/Umbraco.Web.Common/ModelBinding/UmbracoJsonModelBinderProvider.cs @@ -6,7 +6,6 @@ using Microsoft.AspNetCore.Mvc.ModelBinding.Binders; using Microsoft.Extensions.Logging; using Microsoft.Extensions.ObjectPool; using System.Buffers; -using Umbraco.Core.Serialization; using Umbraco.Web.Common.Formatters; namespace Umbraco.Web.Common.ModelBinding @@ -30,9 +29,6 @@ namespace Umbraco.Web.Common.ModelBinding var ss = jsonOptions.SerializerSettings; // Just use the defaults as base - // Register UdiJsonConverter globally - ss.Converters.Add(new UdiJsonConverter()); - // We need to ignore required attributes when serializing. E.g UserSave.ChangePassword. Otherwise the model is not model bound. ss.ContractResolver = new IgnoreRequiredAttributesResolver(); return new IInputFormatter[] @@ -46,7 +42,5 @@ namespace Umbraco.Web.Common.ModelBinding jsonOptions) }; } - - } } From 6d23075d9a84e827117bbebd818b4f4e65e7941c Mon Sep 17 00:00:00 2001 From: Elitsa Marinovska Date: Tue, 3 Nov 2020 16:36:59 +0100 Subject: [PATCH 47/56] Migrating the rest of the files from ContentEditing\ --- .../Models/ContentEditing/ContentBaseSave.cs | 8 +++++++- .../Models/ContentEditing/ContentItemBasic.cs | 5 ----- .../Models/ContentEditing/ContentItemDisplay.cs | 0 .../Models/ContentEditing/ContentItemDisplayBase.cs | 0 .../Models/ContentEditing/ContentVariationDisplay.cs | 7 +------ .../ListViewAwareContentItemDisplayBase.cs | 1 - .../Models/ContentEditing/MediaItemDisplay.cs | 4 +--- .../Models/ContentEditing/MediaItemSave.cs | 0 .../Models/ContentEditing/MemberBasic.cs | 11 +++++++++-- .../Models/ContentEditing/MemberDisplay.cs | 2 -- .../Models/ContentEditing/MemberListDisplay.cs | 1 - .../Models/ContentEditing/MemberSave.cs | 2 +- .../Models/ContentEditing/PublicAccess.cs | 0 .../Models/ContentEditing/RichTextEditorCommand.cs | 10 +--------- .../ContentEditing/RichTextEditorConfiguration.cs | 6 +----- .../Models/ContentEditing/TabbedContentItem.cs | 12 ------------ 16 files changed, 21 insertions(+), 48 deletions(-) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/ContentBaseSave.cs (91%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/ContentItemBasic.cs (95%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/ContentItemDisplay.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/ContentItemDisplayBase.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/ContentVariationDisplay.cs (94%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/ListViewAwareContentItemDisplayBase.cs (97%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/MediaItemDisplay.cs (91%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/MediaItemSave.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/MemberBasic.cs (56%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/MemberDisplay.cs (96%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/MemberListDisplay.cs (95%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/MemberSave.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/PublicAccess.cs (100%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/RichTextEditorCommand.cs (66%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/RichTextEditorConfiguration.cs (86%) rename src/{Umbraco.Infrastructure => Umbraco.Core}/Models/ContentEditing/TabbedContentItem.cs (62%) diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentBaseSave.cs b/src/Umbraco.Core/Models/ContentEditing/ContentBaseSave.cs similarity index 91% rename from src/Umbraco.Infrastructure/Models/ContentEditing/ContentBaseSave.cs rename to src/Umbraco.Core/Models/ContentEditing/ContentBaseSave.cs index 47eb1852e7..a949aa2bd3 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentBaseSave.cs +++ b/src/Umbraco.Core/Models/ContentEditing/ContentBaseSave.cs @@ -24,6 +24,13 @@ namespace Umbraco.Web.Models.ContentEditing [Required] public ContentSaveAction Action { get; set; } + [DataMember(Name = "properties")] + public override IEnumerable Properties + { + get => base.Properties; + set => base.Properties = value; + } + [IgnoreDataMember] public List UploadedFiles { get; } @@ -52,6 +59,5 @@ namespace Umbraco.Web.Models.ContentEditing public ContentPropertyCollectionDto PropertyCollectionDto { get; set; } #endregion - } } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentItemBasic.cs b/src/Umbraco.Core/Models/ContentEditing/ContentItemBasic.cs similarity index 95% rename from src/Umbraco.Infrastructure/Models/ContentEditing/ContentItemBasic.cs rename to src/Umbraco.Core/Models/ContentEditing/ContentItemBasic.cs index d4156d6db5..6689e133fc 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentItemBasic.cs +++ b/src/Umbraco.Core/Models/ContentEditing/ContentItemBasic.cs @@ -3,8 +3,6 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Runtime.Serialization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; namespace Umbraco.Web.Models.ContentEditing { @@ -54,7 +52,6 @@ namespace Umbraco.Web.Models.ContentEditing /// This is nullable since it's only relevant for content (non-content like media + members will be null) /// [DataMember(Name = "state")] - [JsonConverter(typeof(StringEnumConverter))] public ContentSavedState? State { get; set; } [DataMember(Name = "variesByCulture")] @@ -94,12 +91,10 @@ namespace Umbraco.Web.Models.ContentEditing private IEnumerable _properties; - [DataMember(Name = "properties")] public virtual IEnumerable Properties { get => _properties; set => _properties = value; } - } } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentItemDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/ContentItemDisplay.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/ContentItemDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/ContentItemDisplay.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentItemDisplayBase.cs b/src/Umbraco.Core/Models/ContentEditing/ContentItemDisplayBase.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/ContentItemDisplayBase.cs rename to src/Umbraco.Core/Models/ContentEditing/ContentItemDisplayBase.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentVariationDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/ContentVariationDisplay.cs similarity index 94% rename from src/Umbraco.Infrastructure/Models/ContentEditing/ContentVariationDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/ContentVariationDisplay.cs index 47ede6ebce..64491e2270 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/ContentVariationDisplay.cs +++ b/src/Umbraco.Core/Models/ContentEditing/ContentVariationDisplay.cs @@ -1,10 +1,8 @@ -using Newtonsoft.Json; -using System; +using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Runtime.Serialization; -using Newtonsoft.Json.Converters; namespace Umbraco.Web.Models.ContentEditing { @@ -36,7 +34,6 @@ namespace Umbraco.Web.Models.ContentEditing /// Internal property used for tests to get all properties from all tabs /// [IgnoreDataMember] - [JsonIgnore] IEnumerable IContentProperties.Properties => Tabs.SelectMany(x => x.Properties); /// @@ -52,7 +49,6 @@ namespace Umbraco.Web.Models.ContentEditing public string Segment { get; set; } [DataMember(Name = "state")] - [JsonConverter(typeof(StringEnumConverter))] public ContentSavedState State { get; set; } [DataMember(Name = "updateDate")] @@ -79,6 +75,5 @@ namespace Umbraco.Web.Models.ContentEditing [DataMember(Name = "notifications")] [ReadOnly(true)] public List Notifications { get; private set; } - } } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/ListViewAwareContentItemDisplayBase.cs b/src/Umbraco.Core/Models/ContentEditing/ListViewAwareContentItemDisplayBase.cs similarity index 97% rename from src/Umbraco.Infrastructure/Models/ContentEditing/ListViewAwareContentItemDisplayBase.cs rename to src/Umbraco.Core/Models/ContentEditing/ListViewAwareContentItemDisplayBase.cs index 6ec1a0c96a..250ec3f633 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/ListViewAwareContentItemDisplayBase.cs +++ b/src/Umbraco.Core/Models/ContentEditing/ListViewAwareContentItemDisplayBase.cs @@ -1,5 +1,4 @@ using System.Runtime.Serialization; -using Umbraco.Core.Models; namespace Umbraco.Web.Models.ContentEditing { diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/MediaItemDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/MediaItemDisplay.cs similarity index 91% rename from src/Umbraco.Infrastructure/Models/ContentEditing/MediaItemDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/MediaItemDisplay.cs index a5d538c6ac..a1d2a3696f 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/MediaItemDisplay.cs +++ b/src/Umbraco.Core/Models/ContentEditing/MediaItemDisplay.cs @@ -1,7 +1,5 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Runtime.Serialization; -using Umbraco.Core.Models; using Umbraco.Core.Models.ContentEditing; namespace Umbraco.Web.Models.ContentEditing diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/MediaItemSave.cs b/src/Umbraco.Core/Models/ContentEditing/MediaItemSave.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/MediaItemSave.cs rename to src/Umbraco.Core/Models/ContentEditing/MediaItemSave.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/MemberBasic.cs b/src/Umbraco.Core/Models/ContentEditing/MemberBasic.cs similarity index 56% rename from src/Umbraco.Infrastructure/Models/ContentEditing/MemberBasic.cs rename to src/Umbraco.Core/Models/ContentEditing/MemberBasic.cs index 00d2df0020..2352fd46ca 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/MemberBasic.cs +++ b/src/Umbraco.Core/Models/ContentEditing/MemberBasic.cs @@ -1,5 +1,5 @@ -using System.Runtime.Serialization; -using Umbraco.Core.Models; +using System.Collections.Generic; +using System.Runtime.Serialization; namespace Umbraco.Web.Models.ContentEditing { @@ -13,5 +13,12 @@ namespace Umbraco.Web.Models.ContentEditing [DataMember(Name = "email")] public string Email { get; set; } + + [DataMember(Name = "properties")] + public override IEnumerable Properties + { + get => base.Properties; + set => base.Properties = value; + } } } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/MemberDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/MemberDisplay.cs similarity index 96% rename from src/Umbraco.Infrastructure/Models/ContentEditing/MemberDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/MemberDisplay.cs index 8c97925403..0a5caeccc7 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/MemberDisplay.cs +++ b/src/Umbraco.Core/Models/ContentEditing/MemberDisplay.cs @@ -1,8 +1,6 @@ using System.Collections.Generic; using System.Runtime.Serialization; -using Umbraco.Core.Models; using Umbraco.Core.Models.ContentEditing; -using Umbraco.Core.Models.Membership; namespace Umbraco.Web.Models.ContentEditing { diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/MemberListDisplay.cs b/src/Umbraco.Core/Models/ContentEditing/MemberListDisplay.cs similarity index 95% rename from src/Umbraco.Infrastructure/Models/ContentEditing/MemberListDisplay.cs rename to src/Umbraco.Core/Models/ContentEditing/MemberListDisplay.cs index 592bd14df5..4783e2b992 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/MemberListDisplay.cs +++ b/src/Umbraco.Core/Models/ContentEditing/MemberListDisplay.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using System.Runtime.Serialization; -using Umbraco.Core.Models; using Umbraco.Core.Models.ContentEditing; namespace Umbraco.Web.Models.ContentEditing diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/MemberSave.cs b/src/Umbraco.Core/Models/ContentEditing/MemberSave.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/MemberSave.cs rename to src/Umbraco.Core/Models/ContentEditing/MemberSave.cs index b9ec6fad67..8bba20f7bd 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/MemberSave.cs +++ b/src/Umbraco.Core/Models/ContentEditing/MemberSave.cs @@ -2,9 +2,9 @@ using System.ComponentModel.DataAnnotations; using System.Linq; using System.Runtime.Serialization; +using Umbraco.Core; using Umbraco.Core.Models; using Umbraco.Core.Models.Validation; -using Umbraco.Core; namespace Umbraco.Web.Models.ContentEditing { diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/PublicAccess.cs b/src/Umbraco.Core/Models/ContentEditing/PublicAccess.cs similarity index 100% rename from src/Umbraco.Infrastructure/Models/ContentEditing/PublicAccess.cs rename to src/Umbraco.Core/Models/ContentEditing/PublicAccess.cs diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/RichTextEditorCommand.cs b/src/Umbraco.Core/Models/ContentEditing/RichTextEditorCommand.cs similarity index 66% rename from src/Umbraco.Infrastructure/Models/ContentEditing/RichTextEditorCommand.cs rename to src/Umbraco.Core/Models/ContentEditing/RichTextEditorCommand.cs index f304b0ef68..9eb7b57bba 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/RichTextEditorCommand.cs +++ b/src/Umbraco.Core/Models/ContentEditing/RichTextEditorCommand.cs @@ -1,11 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; +using System.Runtime.Serialization; namespace Umbraco.Web.Models.ContentEditing { @@ -18,7 +11,6 @@ namespace Umbraco.Web.Models.ContentEditing [DataMember(Name = "alias")] public string Alias { get; set; } - [JsonConverter(typeof(StringEnumConverter))] [DataMember(Name = "mode")] public RichTextEditorCommandMode Mode { get; set; } } diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/RichTextEditorConfiguration.cs b/src/Umbraco.Core/Models/ContentEditing/RichTextEditorConfiguration.cs similarity index 86% rename from src/Umbraco.Infrastructure/Models/ContentEditing/RichTextEditorConfiguration.cs rename to src/Umbraco.Core/Models/ContentEditing/RichTextEditorConfiguration.cs index 380780b6d8..65ed5a2f7a 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/RichTextEditorConfiguration.cs +++ b/src/Umbraco.Core/Models/ContentEditing/RichTextEditorConfiguration.cs @@ -1,9 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Collections.Generic; using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; namespace Umbraco.Web.Models.ContentEditing { diff --git a/src/Umbraco.Infrastructure/Models/ContentEditing/TabbedContentItem.cs b/src/Umbraco.Core/Models/ContentEditing/TabbedContentItem.cs similarity index 62% rename from src/Umbraco.Infrastructure/Models/ContentEditing/TabbedContentItem.cs rename to src/Umbraco.Core/Models/ContentEditing/TabbedContentItem.cs index db7d1df7bc..60b282ecac 100644 --- a/src/Umbraco.Infrastructure/Models/ContentEditing/TabbedContentItem.cs +++ b/src/Umbraco.Core/Models/ContentEditing/TabbedContentItem.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; -using Newtonsoft.Json; namespace Umbraco.Web.Models.ContentEditing { @@ -19,16 +18,6 @@ namespace Umbraco.Web.Models.ContentEditing [DataMember(Name = "tabs")] public IEnumerable> Tabs { get; set; } - // note - // once a [DataContract] has been defined on a class, with a [DataMember] property, - // one simply cannot ignore that property anymore - [IgnoreDataMember] on an overridden - // property is ignored, and 'newing' the property means that it's the base property - // which is used - // - // OTOH, Json.NET is happy having [JsonIgnore] on overrides, even though the base - // property is [JsonProperty]. so, forcing [JsonIgnore] here, but really, we should - // rethink the whole thing. - /// /// Override the properties property to ensure we don't serialize this /// and to simply return the properties based on the properties in the tabs collection @@ -37,7 +26,6 @@ namespace Umbraco.Web.Models.ContentEditing /// This property cannot be set /// [IgnoreDataMember] - [JsonIgnore] // see note above on IgnoreDataMember vs JsonIgnore public override IEnumerable Properties { get => Tabs.SelectMany(x => x.Properties); From dae6e2b8eef700832318449a7e6ebd43a666a6ba Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Tue, 3 Nov 2020 18:55:55 +0100 Subject: [PATCH 48/56] Migrated RenderNoContentController + related (#9309) * Migrated RenderNoContentController + related Signed-off-by: Bjarke Berg * Fix after MSDI Signed-off-by: Bjarke Berg * Update src/Umbraco.Web.UI/Umbraco.Web.UI.csproj Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com> * Removing connection string * Fixed tests after moving endpoint registration Signed-off-by: Bjarke Berg Co-authored-by: Elitsa Marinovska Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com> --- .../Configuration/Models/GlobalSettings.cs | 2 +- .../Routing/BackOfficeAreaRoutesTests.cs | 14 ++--- .../Routing/PreviewRoutesTests.cs | 15 ++++-- .../RenderNoContentControllerTests.cs | 17 +++--- src/Umbraco.Tests/Umbraco.Tests.csproj | 1 - .../Routing/BackOfficeAreaRoutes.cs | 1 - .../Routing/PreviewRoutes.cs | 2 + src/Umbraco.Web.UI.NetCore/Startup.cs | 1 + .../Umbraco.Web.UI.NetCore.csproj | 2 +- src/Umbraco.Web.UI.NetCore/appsettings.json | 4 +- .../umbraco/UmbracoWebsite}/NoNodes.cshtml | 4 +- src/Umbraco.Web.UI/Umbraco.Web.UI.csproj | 3 +- .../Controllers}/RenderNoContentController.cs | 16 +++--- .../Extensions/CompositionExtensions.cs | 1 + ...racoWebsiteApplicationBuilderExtensions.cs | 14 +++++ .../Models/NoNodesViewModel.cs | 2 +- .../Routing/NoContentRoutes.cs | 52 +++++++++++++++++++ .../Runtime/WebsiteComposer.cs | 7 +-- .../Runtime/WebInitialComponent.cs | 13 +---- src/Umbraco.Web/Umbraco.Web.csproj | 2 - 20 files changed, 115 insertions(+), 58 deletions(-) rename src/{Umbraco.Tests/Web/Mvc => Umbraco.Tests.UnitTests/Umbraco.Web.Website/Controllers}/RenderNoContentControllerTests.cs (85%) rename src/{Umbraco.Web.UI/config/splashes => Umbraco.Web.UI.NetCore/umbraco/UmbracoWebsite}/NoNodes.cshtml (92%) rename src/{Umbraco.Web/Mvc => Umbraco.Web.Website/Controllers}/RenderNoContentController.cs (74%) rename src/{Umbraco.Web => Umbraco.Web.Website}/Models/NoNodesViewModel.cs (71%) create mode 100644 src/Umbraco.Web.Website/Routing/NoContentRoutes.cs diff --git a/src/Umbraco.Core/Configuration/Models/GlobalSettings.cs b/src/Umbraco.Core/Configuration/Models/GlobalSettings.cs index 84956c7636..37d0f4a8a2 100644 --- a/src/Umbraco.Core/Configuration/Models/GlobalSettings.cs +++ b/src/Umbraco.Core/Configuration/Models/GlobalSettings.cs @@ -52,7 +52,7 @@ public string MainDomLock { get; set; } = string.Empty; - public string NoNodesViewPath { get; set; } = "~/config/splashes/NoNodes.cshtml"; + public string NoNodesViewPath { get; set; } = "~/umbraco/UmbracoWebsite/NoNodes.cshtml"; public bool IsSmtpServerConfigured => !string.IsNullOrWhiteSpace(Smtp?.Host); diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Routing/BackOfficeAreaRoutesTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Routing/BackOfficeAreaRoutesTests.cs index a3a9e79e20..40b7030ba8 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Routing/BackOfficeAreaRoutesTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Routing/BackOfficeAreaRoutesTests.cs @@ -56,19 +56,11 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Web.Common.Routing Assert.AreEqual(1, endpoints.DataSources.Count); var route = endpoints.DataSources.First(); - Assert.AreEqual(4, route.Endpoints.Count); - + Assert.AreEqual(3, route.Endpoints.Count); + AssertMinimalBackOfficeRoutes(route); - var endpoint3 = (RouteEndpoint)route.Endpoints[2]; - var previewControllerName = ControllerExtensions.GetControllerName(); - Assert.AreEqual($"umbraco/{previewControllerName.ToLowerInvariant()}/{{action}}/{{id?}}", endpoint3.RoutePattern.RawText); - Assert.AreEqual(Constants.Web.Mvc.BackOfficeArea, endpoint3.RoutePattern.Defaults["area"]); - Assert.AreEqual("Index", endpoint3.RoutePattern.Defaults["action"]); - Assert.AreEqual(previewControllerName, endpoint3.RoutePattern.Defaults["controller"]); - Assert.AreEqual(endpoint3.RoutePattern.Defaults["area"], typeof(PreviewController).GetCustomAttribute(false).RouteValue); - - var endpoint4 = (RouteEndpoint)route.Endpoints[3]; + var endpoint4 = (RouteEndpoint)route.Endpoints[2]; var apiControllerName = ControllerExtensions.GetControllerName(); Assert.AreEqual($"umbraco/backoffice/api/{apiControllerName.ToLowerInvariant()}/{{action}}/{{id?}}", endpoint4.RoutePattern.RawText); Assert.IsFalse(endpoint4.RoutePattern.Defaults.ContainsKey("area")); diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Routing/PreviewRoutesTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Routing/PreviewRoutesTests.cs index 1d85ca554f..1fc6b092c8 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Routing/PreviewRoutesTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Routing/PreviewRoutesTests.cs @@ -36,7 +36,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Web.Common.Routing Assert.AreEqual(0, endpoints.DataSources.Count); } - + [Test] public void RuntimeState_Run() { @@ -44,16 +44,25 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Web.Common.Routing var endpoints = new TestRouteBuilder(); routes.CreateRoutes(endpoints); - Assert.AreEqual(1, endpoints.DataSources.Count); + Assert.AreEqual(2, endpoints.DataSources.Count); var route = endpoints.DataSources.First(); Assert.AreEqual(2, route.Endpoints.Count); var endpoint0 = (RouteEndpoint) route.Endpoints[0]; - Assert.AreEqual($"{routes.GetPreviewHubRoute()}/negotiate", endpoint0.RoutePattern.RawText); + Assert.AreEqual($"{routes.GetPreviewHubRoute()}/negotiate", endpoint0.RoutePattern.RawText); var endpoint1 = (RouteEndpoint) route.Endpoints[1]; Assert.AreEqual($"{routes.GetPreviewHubRoute()}", endpoint1.RoutePattern.RawText); + var endpoint3 = (RouteEndpoint)endpoints.DataSources.Last().Endpoints[0]; + var previewControllerName = ControllerExtensions.GetControllerName(); + Assert.AreEqual($"umbraco/{previewControllerName.ToLowerInvariant()}/{{action}}/{{id?}}", endpoint3.RoutePattern.RawText); + Assert.AreEqual(Constants.Web.Mvc.BackOfficeArea, endpoint3.RoutePattern.Defaults["area"]); + Assert.AreEqual("Index", endpoint3.RoutePattern.Defaults["action"]); + Assert.AreEqual(previewControllerName, endpoint3.RoutePattern.Defaults["controller"]); + Assert.AreEqual(endpoint3.RoutePattern.Defaults["area"], typeof(PreviewController).GetCustomAttribute(false).RouteValue); + + } private PreviewRoutes GetRoutes(RuntimeLevel level) { diff --git a/src/Umbraco.Tests/Web/Mvc/RenderNoContentControllerTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Website/Controllers/RenderNoContentControllerTests.cs similarity index 85% rename from src/Umbraco.Tests/Web/Mvc/RenderNoContentControllerTests.cs rename to src/Umbraco.Tests.UnitTests/Umbraco.Web.Website/Controllers/RenderNoContentControllerTests.cs index 3f66dcb86c..182fb94a40 100644 --- a/src/Umbraco.Tests/Web/Mvc/RenderNoContentControllerTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Website/Controllers/RenderNoContentControllerTests.cs @@ -1,15 +1,15 @@ -using System.Web.Mvc; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; using Moq; using NUnit.Framework; -using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.IO; using Umbraco.Tests.Common; using Umbraco.Web; -using Umbraco.Web.Models; -using Umbraco.Web.Mvc; +using Umbraco.Web.Website.Controllers; +using Umbraco.Web.Website.Models; -namespace Umbraco.Tests.Web.Mvc +namespace Umbraco.Tests.UnitTests.Umbraco.Web.Website.Controllers { [TestFixture] public class RenderNoContentControllerTests @@ -21,7 +21,7 @@ namespace Umbraco.Tests.Web.Mvc var mockUmbracoContext = new Mock(); mockUmbracoContext.Setup(x => x.Content.HasContent()).Returns(true); var mockIOHelper = new Mock(); - var controller = new RenderNoContentController(new TestUmbracoContextAccessor(mockUmbracoContext.Object), mockIOHelper.Object, new GlobalSettings()); + var controller = new RenderNoContentController(new TestUmbracoContextAccessor(mockUmbracoContext.Object), mockIOHelper.Object, Options.Create(new GlobalSettings())); var result = controller.Index() as RedirectResult; @@ -39,11 +39,12 @@ namespace Umbraco.Tests.Web.Mvc mockUmbracoContext.Setup(x => x.Content.HasContent()).Returns(false); var mockIOHelper = new Mock(); mockIOHelper.Setup(x => x.ResolveUrl(It.Is(y => y == UmbracoPathSetting))).Returns(UmbracoPath); - var globalSettings = new GlobalSettings() + + var globalSettings = Options.Create(new GlobalSettings() { UmbracoPath = UmbracoPathSetting, NoNodesViewPath = ViewPath, - }; + }); var controller = new RenderNoContentController(new TestUmbracoContextAccessor(mockUmbracoContext.Object), mockIOHelper.Object, globalSettings); var result = controller.Index() as ViewResult; diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 13e9cbeef1..08b1578d88 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -208,7 +208,6 @@ - diff --git a/src/Umbraco.Web.BackOffice/Routing/BackOfficeAreaRoutes.cs b/src/Umbraco.Web.BackOffice/Routing/BackOfficeAreaRoutes.cs index 7922b6a46d..c3fbc9c556 100644 --- a/src/Umbraco.Web.BackOffice/Routing/BackOfficeAreaRoutes.cs +++ b/src/Umbraco.Web.BackOffice/Routing/BackOfficeAreaRoutes.cs @@ -49,7 +49,6 @@ namespace Umbraco.Web.BackOffice.Routing case RuntimeLevel.Run: MapMinimalBackOffice(endpoints); - endpoints.MapUmbracoRoute(_umbracoPathSegment, Constants.Web.Mvc.BackOfficeArea, null); AutoRouteBackOfficeControllers(endpoints); break; case RuntimeLevel.BootFailed: diff --git a/src/Umbraco.Web.BackOffice/Routing/PreviewRoutes.cs b/src/Umbraco.Web.BackOffice/Routing/PreviewRoutes.cs index 210b0ffddb..d6c961ed54 100644 --- a/src/Umbraco.Web.BackOffice/Routing/PreviewRoutes.cs +++ b/src/Umbraco.Web.BackOffice/Routing/PreviewRoutes.cs @@ -5,6 +5,7 @@ using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; +using Umbraco.Web.BackOffice.Controllers; using Umbraco.Web.BackOffice.SignalR; using Umbraco.Web.Common.Routing; @@ -37,6 +38,7 @@ namespace Umbraco.Web.BackOffice.Routing break; case RuntimeLevel.Run: endpoints.MapHub(GetPreviewHubRoute()); + endpoints.MapUmbracoRoute(_umbracoPathSegment, Constants.Web.Mvc.BackOfficeArea, null); break; case RuntimeLevel.BootFailed: case RuntimeLevel.Unknown: diff --git a/src/Umbraco.Web.UI.NetCore/Startup.cs b/src/Umbraco.Web.UI.NetCore/Startup.cs index b4ef7f59ec..2a4d4a4580 100644 --- a/src/Umbraco.Web.UI.NetCore/Startup.cs +++ b/src/Umbraco.Web.UI.NetCore/Startup.cs @@ -49,6 +49,7 @@ namespace Umbraco.Web.UI.NetCore } app.UseUmbraco(); + app.UseUmbracoWebsite(); } } } diff --git a/src/Umbraco.Web.UI.NetCore/Umbraco.Web.UI.NetCore.csproj b/src/Umbraco.Web.UI.NetCore/Umbraco.Web.UI.NetCore.csproj index 1af278cbc3..6cc92f18da 100644 --- a/src/Umbraco.Web.UI.NetCore/Umbraco.Web.UI.NetCore.csproj +++ b/src/Umbraco.Web.UI.NetCore/Umbraco.Web.UI.NetCore.csproj @@ -24,7 +24,6 @@ - @@ -55,6 +54,7 @@ Always + diff --git a/src/Umbraco.Web.UI.NetCore/appsettings.json b/src/Umbraco.Web.UI.NetCore/appsettings.json index 0d068bbd43..00bd04c0b4 100644 --- a/src/Umbraco.Web.UI.NetCore/appsettings.json +++ b/src/Umbraco.Web.UI.NetCore/appsettings.json @@ -38,8 +38,8 @@ "ConvertUrlsToAscii": "try" }, "RuntimeMinification": { - "dataFolder": "App_Data/TEMP/Smidge", - "version": "1" + "dataFolder": "App_Data/TEMP/Smidge", + "version": "637395756047165417" }, "Security": { "KeepUserLoggedIn": false, diff --git a/src/Umbraco.Web.UI/config/splashes/NoNodes.cshtml b/src/Umbraco.Web.UI.NetCore/umbraco/UmbracoWebsite/NoNodes.cshtml similarity index 92% rename from src/Umbraco.Web.UI/config/splashes/NoNodes.cshtml rename to src/Umbraco.Web.UI.NetCore/umbraco/UmbracoWebsite/NoNodes.cshtml index 4193e58873..2d397b0fbb 100644 --- a/src/Umbraco.Web.UI/config/splashes/NoNodes.cshtml +++ b/src/Umbraco.Web.UI.NetCore/umbraco/UmbracoWebsite/NoNodes.cshtml @@ -1,4 +1,4 @@ -@inherits System.Web.Mvc.WebViewPage +@model Umbraco.Web.Website.Models.NoNodesViewModel @@ -8,7 +8,7 @@ Umbraco: No Published Content - + diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index 1ca65dfd66..4d1e2101bd 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -137,7 +137,6 @@ True Settings.settings - ClientDependency.config Designer @@ -351,4 +350,4 @@ - \ No newline at end of file + diff --git a/src/Umbraco.Web/Mvc/RenderNoContentController.cs b/src/Umbraco.Web.Website/Controllers/RenderNoContentController.cs similarity index 74% rename from src/Umbraco.Web/Mvc/RenderNoContentController.cs rename to src/Umbraco.Web.Website/Controllers/RenderNoContentController.cs index 52ee7cf44d..0c55ab075b 100644 --- a/src/Umbraco.Web/Mvc/RenderNoContentController.cs +++ b/src/Umbraco.Web.Website/Controllers/RenderNoContentController.cs @@ -1,19 +1,19 @@ using System; -using System.Web.Mvc; -using Umbraco.Core.Configuration; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; using Umbraco.Core.Configuration.Models; using Umbraco.Core.IO; -using Umbraco.Web.Models; +using Umbraco.Web.Website.Models; -namespace Umbraco.Web.Mvc +namespace Umbraco.Web.Website.Controllers { public class RenderNoContentController : Controller { private readonly IUmbracoContextAccessor _umbracoContextAccessor; private readonly IIOHelper _ioHelper; - private readonly GlobalSettings _globalSettings; + private readonly IOptions _globalSettings; - public RenderNoContentController(IUmbracoContextAccessor umbracoContextAccessor, IIOHelper ioHelper, GlobalSettings globalSettings) + public RenderNoContentController(IUmbracoContextAccessor umbracoContextAccessor, IIOHelper ioHelper, IOptions globalSettings) { _umbracoContextAccessor = umbracoContextAccessor ?? throw new ArgumentNullException(nameof(umbracoContextAccessor)); _ioHelper = ioHelper ?? throw new ArgumentNullException(nameof(ioHelper)); @@ -31,10 +31,10 @@ namespace Umbraco.Web.Mvc var model = new NoNodesViewModel { - UmbracoPath = _ioHelper.ResolveUrl(_globalSettings.UmbracoPath), + UmbracoPath = _ioHelper.ResolveUrl(_globalSettings.Value.UmbracoPath), }; - return View(_globalSettings.NoNodesViewPath, model); + return View(_globalSettings.Value.NoNodesViewPath, model); } } } diff --git a/src/Umbraco.Web.Website/Extensions/CompositionExtensions.cs b/src/Umbraco.Web.Website/Extensions/CompositionExtensions.cs index c832f2fac0..19917a8d1c 100644 --- a/src/Umbraco.Web.Website/Extensions/CompositionExtensions.cs +++ b/src/Umbraco.Web.Website/Extensions/CompositionExtensions.cs @@ -20,6 +20,7 @@ namespace Umbraco.Extensions // typeof(UmbRegisterController),//TODO introduce when migrated // typeof(UmbLoginController),//TODO introduce when migrated typeof(RenderMvcController), + typeof(RenderNoContentController), }); diff --git a/src/Umbraco.Web.Website/Extensions/UmbracoWebsiteApplicationBuilderExtensions.cs b/src/Umbraco.Web.Website/Extensions/UmbracoWebsiteApplicationBuilderExtensions.cs index 3c6de4b88a..ef99d67373 100644 --- a/src/Umbraco.Web.Website/Extensions/UmbracoWebsiteApplicationBuilderExtensions.cs +++ b/src/Umbraco.Web.Website/Extensions/UmbracoWebsiteApplicationBuilderExtensions.cs @@ -1,6 +1,8 @@ using System; using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; using SixLabors.ImageSharp.Web.DependencyInjection; +using Umbraco.Web.Website.Routing; namespace Umbraco.Extensions { @@ -16,6 +18,18 @@ namespace Umbraco.Extensions // TODO: Since we are dependent on these we need to register them but what happens when we call this multiple times since we are dependent on this for UseUmbracoBackOffice too? app.UseImageSharp(); app.UseStaticFiles(); + app.UseUmbracoNoContentPage(); + + return app; + } + + public static IApplicationBuilder UseUmbracoNoContentPage(this IApplicationBuilder app) + { + app.UseEndpoints(endpoints => + { + var noContentRoutes = app.ApplicationServices.GetRequiredService(); + noContentRoutes.CreateRoutes(endpoints); + }); return app; } diff --git a/src/Umbraco.Web/Models/NoNodesViewModel.cs b/src/Umbraco.Web.Website/Models/NoNodesViewModel.cs similarity index 71% rename from src/Umbraco.Web/Models/NoNodesViewModel.cs rename to src/Umbraco.Web.Website/Models/NoNodesViewModel.cs index ca75fd3c02..2a0be7dd2c 100644 --- a/src/Umbraco.Web/Models/NoNodesViewModel.cs +++ b/src/Umbraco.Web.Website/Models/NoNodesViewModel.cs @@ -1,4 +1,4 @@ -namespace Umbraco.Web.Models +namespace Umbraco.Web.Website.Models { public class NoNodesViewModel { diff --git a/src/Umbraco.Web.Website/Routing/NoContentRoutes.cs b/src/Umbraco.Web.Website/Routing/NoContentRoutes.cs new file mode 100644 index 0000000000..58885bcd96 --- /dev/null +++ b/src/Umbraco.Web.Website/Routing/NoContentRoutes.cs @@ -0,0 +1,52 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.Options; +using Umbraco.Core; +using Umbraco.Core.Configuration; +using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Hosting; +using Umbraco.Web.Common.Routing; + +namespace Umbraco.Web.Website.Routing +{ + /// + /// Creates route for the no content page + /// + public class NoContentRoutes : IAreaRoutes + { + private readonly IRuntimeState _runtimeState; + private readonly string _umbracoPathSegment; + + public NoContentRoutes( + IOptions globalSettings, + IHostingEnvironment hostingEnvironment, + IRuntimeState runtimeState) + { + _runtimeState = runtimeState; + _umbracoPathSegment = globalSettings.Value.GetUmbracoMvcArea(hostingEnvironment); + } + + public void CreateRoutes(IEndpointRouteBuilder endpoints) + { + switch (_runtimeState.Level) + { + case RuntimeLevel.Install: + break; + case RuntimeLevel.Upgrade: + break; + case RuntimeLevel.Run: + endpoints.MapControllerRoute( + // named consistently + Constants.Web.NoContentRouteName, + _umbracoPathSegment + "/UmbNoContent", + new { controller = "RenderNoContent", action = "Index" } + ); + break; + case RuntimeLevel.BootFailed: + case RuntimeLevel.Unknown: + case RuntimeLevel.Boot: + break; + } + } + } +} diff --git a/src/Umbraco.Web.Website/Runtime/WebsiteComposer.cs b/src/Umbraco.Web.Website/Runtime/WebsiteComposer.cs index 0e99875dc0..11204483bd 100644 --- a/src/Umbraco.Web.Website/Runtime/WebsiteComposer.cs +++ b/src/Umbraco.Web.Website/Runtime/WebsiteComposer.cs @@ -1,7 +1,8 @@ -using Umbraco.Core.Composing; +using Umbraco.Core; +using Umbraco.Core.Composing; using Umbraco.Extensions; +using Umbraco.Web.Website.Routing; using Umbraco.Web.Common.Runtime; -using Umbraco.Web.Website.Controllers; namespace Umbraco.Web.Website.Runtime { @@ -12,12 +13,12 @@ namespace Umbraco.Web.Website.Runtime { public void Compose(Composition composition) { + composition.Services.AddUnique(); composition .ComposeWebsiteUmbracoControllers() //.SetDefaultRenderMvcController()// default controller for template views ; - } } } diff --git a/src/Umbraco.Web/Runtime/WebInitialComponent.cs b/src/Umbraco.Web/Runtime/WebInitialComponent.cs index d02ccdd01e..780855afc9 100644 --- a/src/Umbraco.Web/Runtime/WebInitialComponent.cs +++ b/src/Umbraco.Web/Runtime/WebInitialComponent.cs @@ -95,7 +95,7 @@ namespace Umbraco.Web.Runtime // set the render & plugin view engines ViewEngines.Engines.Add(new RenderViewEngine(_hostingEnvironment)); ViewEngines.Engines.Add(new PluginViewEngine()); - + ////add the profiling action filter //GlobalFilters.Filters.Add(new ProfilingActionFilter()); @@ -122,9 +122,6 @@ namespace Umbraco.Web.Runtime ); defaultRoute.RouteHandler = new RenderRouteHandler(umbracoContextAccessor, ControllerBuilder.Current.GetControllerFactory(), shortStringHelper); - // register no content route - RouteNoContentController(umbracoPath); - // register install routes // RouteTable.Routes.RegisterArea(); @@ -135,14 +132,6 @@ namespace Umbraco.Web.Runtime RoutePluginControllers(globalSettings, surfaceControllerTypes, apiControllerTypes, hostingEnvironment); } - private static void RouteNoContentController(string umbracoPath) - { - RouteTable.Routes.MapRoute( - Constants.Web.NoContentRouteName, - umbracoPath + "/UmbNoContent", - new { controller = "RenderNoContent", action = "Index" }); - } - private static void RoutePluginControllers( GlobalSettings globalSettings, SurfaceControllerTypeCollection surfaceControllerTypes, diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index a881e3f704..cd2d326c14 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -151,8 +151,6 @@ - - From 595b64c6f0de30e5bc66ed2194dca794e4494a22 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Wed, 4 Nov 2020 13:17:20 +0100 Subject: [PATCH 49/56] Handle UI issues now enums always are strings Signed-off-by: Bjarke Berg --- .../common/services/notifications.service.js | 43 +++++++++++-------- .../infiniteeditors/embed/embed.controller.js | 3 ++ 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/services/notifications.service.js b/src/Umbraco.Web.UI.Client/src/common/services/notifications.service.js index 000ba05f1e..ad02520c5a 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/notifications.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/notifications.service.js @@ -2,12 +2,12 @@ * @ngdoc service * @name umbraco.services.notificationsService * - * @requires $rootScope + * @requires $rootScope * @requires $timeout * @requires angularHelper - * + * * @description - * Application-wide service for handling notifications, the umbraco application + * Application-wide service for handling notifications, the umbraco application * maintains a single collection of notications, which the UI watches for changes. * By default when a notication is added, it is automaticly removed 7 seconds after * This can be changed on add() @@ -19,7 +19,7 @@ *
  *		notificationsService.success("Document Published", "hooraaaay for you!");
  *      notificationsService.error("Document Failed", "booooh");
- * 
+ * */ angular.module('umbraco.services') .factory('notificationsService', function ($rootScope, $timeout, angularHelper) { @@ -50,7 +50,7 @@ angular.module('umbraco.services') * @param {Object} item The notification item * @param {String} item.headline Short headline * @param {String} item.message longer text for the notication, trimmed after 200 characters, which can then be exanded - * @param {String} item.type Notification type, can be: "success","warning","error" or "info" + * @param {String} item.type Notification type, can be: "success","warning","error" or "info" * @param {String} item.url url to open when notification is clicked * @param {String} item.target the target used together with `url`. Empty if not specified. * @param {String} item.view path to custom view to load into the notification box @@ -76,10 +76,10 @@ angular.module('umbraco.services') if(item.message.length > 200) { item.sticky = true; } - } - - //we need to ID the item, going by index isn't good enough because people can remove at different indexes - // whenever they want. Plus once we remove one, then the next index will be different. The only way to + } + + //we need to ID the item, going by index isn't good enough because people can remove at different indexes + // whenever they want. Plus once we remove one, then the next index will be different. The only way to // effectively remove an item is by an Id. item.id = String.CreateGuid(); @@ -110,7 +110,7 @@ angular.module('umbraco.services') }else{ view = setViewPath(view).toLowerCase(); return _.find(nArray, function(notification){ return notification.view.toLowerCase() === view;}); - } + } }, addView: function(view, args){ var item = { @@ -128,7 +128,7 @@ angular.module('umbraco.services') * * @description * Shows a notification based on the object passed in, normally used to render notifications sent back from the server - * + * * @returns {Object} args notification object */ showNotification: function(args) { @@ -141,25 +141,30 @@ angular.module('umbraco.services') if (!args.header) { throw "args.header cannot be null"; } - + switch(args.type) { case 0: + case 'Save': //save this.success(args.header, args.message); break; case 1: + case 'Info': //info this.info(args.header, args.message); break; case 2: + case 'Error': //error this.error(args.header, args.message); break; case 3: + case 'Success': //success this.success(args.header, args.message); break; case 4: + case 'Warning': //warning this.warning(args.header, args.message); break; @@ -190,7 +195,7 @@ angular.module('umbraco.services') * @description * Adds a red error notication to the notications collection * This should be used when an operations *fails* and could not complete - * + * * @param {String} headline Headline of the notification * @param {String} message longer text for the notication, trimmed after 200 characters, which can then be exanded * @returns {Object} notification object @@ -207,7 +212,7 @@ angular.module('umbraco.services') * @description * Adds a yellow warning notication to the notications collection * This should be used when an operations *completes* but something was not as expected - * + * * * @param {String} headline Headline of the notification * @param {String} message longer text for the notication, trimmed after 200 characters, which can then be exanded @@ -225,7 +230,7 @@ angular.module('umbraco.services') * @description * Adds a yellow warning notication to the notications collection * This should be used when an operations *completes* but something was not as expected - * + * * * @param {String} headline Headline of the notification * @param {String} message longer text for the notication, trimmed after 200 characters, which can then be exanded @@ -241,7 +246,7 @@ angular.module('umbraco.services') * @methodOf umbraco.services.notificationsService * * @description - * Removes a notification from the notifcations collection at a given index + * Removes a notification from the notifcations collection at a given index * * @param {Int} index index where the notication should be removed from */ @@ -254,7 +259,7 @@ angular.module('umbraco.services') }else{ angularHelper.safeApply($rootScope, function() { nArray.splice(index, 1); - }); + }); } }, @@ -264,7 +269,7 @@ angular.module('umbraco.services') * @methodOf umbraco.services.notificationsService * * @description - * Removes all notifications from the notifcations collection + * Removes all notifications from the notifcations collection */ removeAll: function () { angularHelper.safeApply($rootScope, function() { @@ -290,7 +295,7 @@ angular.module('umbraco.services') * @methodOf umbraco.services.notificationsService * * @description - * Method to return all notifications from the notifcations collection + * Method to return all notifications from the notifcations collection */ getCurrent: function(){ return nArray; diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/embed/embed.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/embed/embed.controller.js index c3d1312109..f132c0211b 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/embed/embed.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/embed/embed.controller.js @@ -64,6 +64,7 @@ switch (response.data.OEmbedStatus) { case 0: + case 'NotSupported': //not supported $scope.model.embed.preview = ""; $scope.model.embed.info = "Not supported"; @@ -72,6 +73,7 @@ vm.trustedPreview = null; break; case 1: + case 'Error': //error $scope.model.embed.preview = ""; $scope.model.embed.info = "Could not embed media - please ensure the URL is valid"; @@ -80,6 +82,7 @@ vm.trustedPreview = null; break; case 2: + case 'Success': $scope.model.embed.success = true; $scope.model.embed.supportsDimensions = response.data.SupportsDimensions; $scope.model.embed.preview = response.data.Markup; From 52550efc036c3b71ba1f9e2a69687da22b8ed133 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Wed, 4 Nov 2020 13:56:44 +0100 Subject: [PATCH 50/56] Fix language to a language that exists in .net core Signed-off-by: Bjarke Berg --- .../cypress/integration/Settings/languages.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Tests.AcceptanceTest/cypress/integration/Settings/languages.ts b/src/Umbraco.Tests.AcceptanceTest/cypress/integration/Settings/languages.ts index 49bcf94943..541c6d213d 100644 --- a/src/Umbraco.Tests.AcceptanceTest/cypress/integration/Settings/languages.ts +++ b/src/Umbraco.Tests.AcceptanceTest/cypress/integration/Settings/languages.ts @@ -6,7 +6,7 @@ context('Languages', () => { }); it('Add language', () => { - const name = "Kyrgyz (Kyrgyzstan)"; // Must be an option in the select box + const name = "Afrikaans"; // Must be an option in the select box cy.umbracoEnsureLanguageNameNotExists(name); From 09e5e68e77f47713cd28055572d3db5d1b9818bf Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Wed, 4 Nov 2020 14:47:00 +0100 Subject: [PATCH 51/56] Fix enum to string issue for HealthCheck StatusResultType Signed-off-by: Bjarke Berg --- .../src/views/dashboard/settings/healthcheck.controller.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/views/dashboard/settings/healthcheck.controller.js b/src/Umbraco.Web.UI.Client/src/views/dashboard/settings/healthcheck.controller.js index 991a8132cf..f3446663e1 100644 --- a/src/Umbraco.Web.UI.Client/src/views/dashboard/settings/healthcheck.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/dashboard/settings/healthcheck.controller.js @@ -39,15 +39,19 @@ check.status.forEach(status => { switch (status.resultType) { case SUCCESS: + case 'Success': totalSuccess = totalSuccess + 1; break; case WARNING: + case 'Warning': totalWarning = totalWarning + 1; break; case ERROR: + case 'Error': totalError = totalError + 1; break; case INFO: + case 'Info': totalInfo = totalInfo + 1; break; } From ffd28b1fb8335464048195e3ddfb746f9adf8b29 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Wed, 4 Nov 2020 19:50:01 +0100 Subject: [PATCH 52/56] More enums as string in UI Signed-off-by: Bjarke Berg --- .../src/installer/steps/database.html | 12 ++++++------ .../src/views/dashboard/settings/healthcheck.html | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/installer/steps/database.html b/src/Umbraco.Web.UI.Client/src/installer/steps/database.html index ebffc4cf97..2c81f3ddf3 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/steps/database.html +++ b/src/Umbraco.Web.UI.Client/src/installer/steps/database.html @@ -17,11 +17,11 @@ -
+

Great! No need to configure anything, you can simply click the continue button below to continue to the next step

-
+
What is the exact connection string we should use?
@@ -32,7 +32,7 @@
-
+
Where do we find your database?
@@ -40,7 +40,7 @@
Enter server domain or IP
@@ -86,7 +86,7 @@
-
+
@@ -103,10 +103,10 @@
From 3f5f85880e016daa5d27577ad4926fdd1d1fa051 Mon Sep 17 00:00:00 2001 From: Paul Johnson Date: Tue, 10 Nov 2020 08:50:47 +0000 Subject: [PATCH 53/56] NetCore: MSDI refactor split CoreRuntime & Remove Current (#9356) * Split Bootstrap code from CoreRuntime * Make ContentService method signatures match interface prevents need to hide the concrete class in tests * Remove Current Only bit that bugs me is TreeNode for IconFilePath I get the feeling it's dead code, but can just use a setter in cs or work out path in js if required. * Fix tests, remember to terminate IRuntime --- src/Umbraco.Core/Composing/Current.cs | 70 --- .../Models/ContentEditing/UserInvite.cs | 9 +- src/Umbraco.Core/Models/Member.cs | 5 +- .../PublishedContentExtensions.cs | 1 - src/Umbraco.Core/Services/IRuntime.cs | 10 +- src/Umbraco.Core/StaticApplicationLogging.cs | 22 + src/Umbraco.Core/UriExtensions.cs | 3 +- .../CompositionExtensions_Essentials.cs | 62 --- .../Events/QueuingEventDispatcher.cs | 3 +- .../HealthCheck/HealthCheckResults.cs | 4 +- .../Models/PropertyTagsExtensions.cs | 3 +- .../Persistence/DbConnectionExtensions.cs | 3 +- .../Persistence/UmbracoDatabaseExtensions.cs | 3 +- .../PropertyEditors/DataEditor.cs | 1 - .../PropertyEditors/DataValueEditor.cs | 3 +- .../ValueConverters/GridValueConverter.cs | 3 +- .../Routing/NotFoundHandlerHelper.cs | 3 +- .../Runtime/CoreRuntime.cs | 421 ++---------------- .../Runtime/CoreRuntimeBootstrapper.cs | 376 ++++++++++++++++ .../Services/Implement/ContentService.cs | 4 +- .../Services/Implement/EntityXmlSerializer.cs | 1 - .../LocalizedTextServiceFileSources.cs | 1 - src/Umbraco.Infrastructure/Suspendable.cs | 12 +- .../Sync/ServerMessengerBase.cs | 7 +- src/Umbraco.Infrastructure/Trees/TreeNode.cs | 17 +- src/Umbraco.Tests.Integration/RuntimeTests.cs | 25 +- .../UmbracoBuilderExtensions.cs | 2 +- .../UmbracoTestServerTestBase.cs | 7 +- .../Testing/UmbracoIntegrationTest.cs | 54 ++- .../Services/ContentEventsTests.cs | 3 - .../Services/ContentServicePerformanceTest.cs | 4 +- .../Routing/RenderRouteHandlerTests.cs | 4 +- .../Runtimes/CoreRuntimeTests.cs | 12 +- ...ateUmbracoFormRouteStringAttributeTests.cs | 1 - .../Controllers/ContentControllerBase.cs | 1 - .../Controllers/UpdateCheckController.cs | 1 - .../BackOfficeApplicationBuilderExtensions.cs | 18 - .../Trees/PartialViewMacrosTreeController.cs | 3 +- .../Trees/PartialViewsTreeController.cs | 3 +- .../Controllers/UmbracoController.cs | 1 - .../ApplicationBuilderExtensions.cs | 7 +- .../ImageCropperTemplateExtensions.cs | 3 +- .../UmbracoCoreServiceCollectionExtensions.cs | 12 +- .../UmbracoContext/UmbracoContext.cs | 1 - .../umbraco/UmbracoInstall/Index.cshtml | 1 - src/Umbraco.Web/Composing/Current.cs | 1 - src/Umbraco.Web/Logging/OwinLoggerFactory.cs | 4 +- src/Umbraco.Web/UmbracoApplication.cs | 4 +- src/Umbraco.Web/UmbracoApplicationBase.cs | 32 +- src/Umbraco.Web/UmbracoHelper.cs | 3 +- 50 files changed, 563 insertions(+), 691 deletions(-) delete mode 100644 src/Umbraco.Core/Composing/Current.cs create mode 100644 src/Umbraco.Core/StaticApplicationLogging.cs delete mode 100644 src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs create mode 100644 src/Umbraco.Infrastructure/Runtime/CoreRuntimeBootstrapper.cs diff --git a/src/Umbraco.Core/Composing/Current.cs b/src/Umbraco.Core/Composing/Current.cs deleted file mode 100644 index 003f3ee6a2..0000000000 --- a/src/Umbraco.Core/Composing/Current.cs +++ /dev/null @@ -1,70 +0,0 @@ -using System; -using System.Runtime.CompilerServices; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Logging; -using Umbraco.Core; -using Umbraco.Core.Configuration; -using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Hosting; -using Umbraco.Core.IO; -using Umbraco.Core.Logging; -using Microsoft.Extensions.Logging.Abstractions; - -namespace Umbraco.Composing -{ - public static class Current - { - private static ILogger _logger = new NullLogger(); - private static IIOHelper _ioHelper; - private static IHostingEnvironment _hostingEnvironment; - private static IBackOfficeInfo _backOfficeInfo; - private static IProfiler _profiler; - private static SecuritySettings _securitySettings; - private static GlobalSettings _globalSettings; - - public static ILogger Logger => EnsureInitialized(_logger); - public static IIOHelper IOHelper => EnsureInitialized(_ioHelper); - public static IHostingEnvironment HostingEnvironment => EnsureInitialized(_hostingEnvironment); - public static IBackOfficeInfo BackOfficeInfo => EnsureInitialized(_backOfficeInfo); - public static IProfiler Profiler => EnsureInitialized(_profiler); - public static SecuritySettings SecuritySettings => EnsureInitialized(_securitySettings); - public static GlobalSettings GlobalSettings => EnsureInitialized(_globalSettings); - - public static bool IsInitialized { get; internal set; } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static T EnsureInitialized(T returnValue) - where T : class - { - if (returnValue is null && !IsInitialized) - throw new InvalidOperationException("Current cannot be used before initialize"); - return returnValue; - } - - public static void Initialize( - ILogger logger, - SecuritySettings securitySettings, - GlobalSettings globalSettings, - IIOHelper ioHelper, - IHostingEnvironment hostingEnvironment, - IBackOfficeInfo backOfficeInfo, - IProfiler profiler) - { - if (IsInitialized) - { - throw new InvalidOperationException("Current cannot be initialized more than once"); - } - - _logger = logger ?? throw new ArgumentNullException(nameof(logger)); - _ioHelper = ioHelper ?? throw new ArgumentNullException(nameof(ioHelper)); - _hostingEnvironment = hostingEnvironment ?? throw new ArgumentNullException(nameof(hostingEnvironment)); - _backOfficeInfo = backOfficeInfo ?? throw new ArgumentNullException(nameof(backOfficeInfo)); - _profiler = profiler ?? throw new ArgumentNullException(nameof(profiler)); - _securitySettings = securitySettings ?? throw new ArgumentNullException(nameof(securitySettings)); - _globalSettings = globalSettings ?? throw new ArgumentNullException(nameof(globalSettings)); - - IsInitialized = true; - } - - } -} diff --git a/src/Umbraco.Core/Models/ContentEditing/UserInvite.cs b/src/Umbraco.Core/Models/ContentEditing/UserInvite.cs index 68a7a9bd3f..bf2a84fbbe 100644 --- a/src/Umbraco.Core/Models/ContentEditing/UserInvite.cs +++ b/src/Umbraco.Core/Models/ContentEditing/UserInvite.cs @@ -2,8 +2,10 @@ using System.ComponentModel.DataAnnotations; using System.Linq; using System.Runtime.Serialization; -using Umbraco.Composing; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; using Umbraco.Core; +using Umbraco.Core.Configuration.Models; namespace Umbraco.Web.Models.ContentEditing { @@ -33,8 +35,9 @@ namespace Umbraco.Web.Models.ContentEditing if (UserGroups.Any() == false) yield return new ValidationResult("A user must be assigned to at least one group", new[] { nameof(UserGroups) }); - // TODO: this will need another way of retrieving this setting if and when Configs are removed from Current. - if (Current.SecuritySettings.UsernameIsEmail == false && Username.IsNullOrWhiteSpace()) + var securitySettings = validationContext.GetRequiredService>(); + + if (securitySettings.Value.UsernameIsEmail == false && Username.IsNullOrWhiteSpace()) yield return new ValidationResult("A username cannot be empty", new[] { nameof(Username) }); } } diff --git a/src/Umbraco.Core/Models/Member.cs b/src/Umbraco.Core/Models/Member.cs index d155db8b7c..8a765b2f25 100644 --- a/src/Umbraco.Core/Models/Member.cs +++ b/src/Umbraco.Core/Models/Member.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.ComponentModel; using System.Runtime.Serialization; using Microsoft.Extensions.Logging; -using Umbraco.Composing; namespace Umbraco.Core.Models @@ -473,7 +472,7 @@ namespace Umbraco.Core.Models { void DoLog(string logPropertyAlias, string logPropertyName) { - Current.Logger.LogWarning("Trying to access the '{PropertyName}' property on '{MemberType}' " + + StaticApplicationLogging.Logger.LogWarning("Trying to access the '{PropertyName}' property on '{MemberType}' " + "but the {PropertyAlias} property does not exist on the member type so a default value is returned. " + "Ensure that you have a property type with alias: {PropertyAlias} configured on your member type in order to use the '{PropertyName}' property on the model correctly.", logPropertyName, @@ -498,7 +497,7 @@ namespace Umbraco.Core.Models { void DoLog(string logPropertyAlias, string logPropertyName) { - Current.Logger.LogWarning("An attempt was made to set a value on the property '{PropertyName}' on type '{MemberType}' but the " + + StaticApplicationLogging.Logger.LogWarning("An attempt was made to set a value on the property '{PropertyName}' on type '{MemberType}' but the " + "property type {PropertyAlias} does not exist on the member type, ensure that this property type exists so that setting this property works correctly.", logPropertyName, typeof(Member), diff --git a/src/Umbraco.Core/PublishedContentExtensions.cs b/src/Umbraco.Core/PublishedContentExtensions.cs index 62f48917c3..1b7c460c8b 100644 --- a/src/Umbraco.Core/PublishedContentExtensions.cs +++ b/src/Umbraco.Core/PublishedContentExtensions.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using Umbraco.Composing; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Models.PublishedContent; diff --git a/src/Umbraco.Core/Services/IRuntime.cs b/src/Umbraco.Core/Services/IRuntime.cs index ff533be76e..8a1be721d0 100644 --- a/src/Umbraco.Core/Services/IRuntime.cs +++ b/src/Umbraco.Core/Services/IRuntime.cs @@ -1,7 +1,4 @@ using System; -using Microsoft.Extensions.DependencyInjection; -using Umbraco.Core.Composing; -using Umbraco.Core.Configuration; namespace Umbraco.Core { @@ -10,17 +7,12 @@ namespace Umbraco.Core /// public interface IRuntime { - /// - /// Boots the runtime. - /// - void Configure(IServiceCollection services); - /// /// Gets the runtime state. /// IRuntimeState State { get; } - void Start(IServiceProvider serviceProvider); + void Start(); /// /// Terminates the runtime. diff --git a/src/Umbraco.Core/StaticApplicationLogging.cs b/src/Umbraco.Core/StaticApplicationLogging.cs new file mode 100644 index 0000000000..a1e06bc1f8 --- /dev/null +++ b/src/Umbraco.Core/StaticApplicationLogging.cs @@ -0,0 +1,22 @@ +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; + +namespace Umbraco.Core +{ + public static class StaticApplicationLogging + { + private static ILoggerFactory _loggerFactory; + + public static void Initialize(ILoggerFactory loggerFactory) + { + _loggerFactory = loggerFactory; + } + + public static ILogger Logger => CreateLogger(); + + public static ILogger CreateLogger() + { + return _loggerFactory?.CreateLogger() ?? new NullLogger(); + } + } +} diff --git a/src/Umbraco.Core/UriExtensions.cs b/src/Umbraco.Core/UriExtensions.cs index 446e60e18f..0452373d55 100644 --- a/src/Umbraco.Core/UriExtensions.cs +++ b/src/Umbraco.Core/UriExtensions.cs @@ -2,7 +2,6 @@ using System.IO; using System.Linq; using Microsoft.Extensions.Logging; -using Umbraco.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; @@ -160,7 +159,7 @@ namespace Umbraco.Core } catch (ArgumentException) { - Current.Logger.LogDebug("Failed to determine if request was client side (invalid chars in path \"{Path}\"?)", url.LocalPath); + StaticApplicationLogging.Logger.LogDebug("Failed to determine if request was client side (invalid chars in path \"{Path}\"?)", url.LocalPath); return false; } } diff --git a/src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs b/src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs deleted file mode 100644 index d254139a04..0000000000 --- a/src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs +++ /dev/null @@ -1,62 +0,0 @@ -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; -using Umbraco.Core.Cache; -using Umbraco.Core.Composing; -using Umbraco.Core.Configuration; -using Umbraco.Core.Hosting; -using Umbraco.Core.IO; -using Umbraco.Core.Logging; -using Umbraco.Core.Persistence; - -namespace Umbraco.Core -{ - /// - /// Provides extension methods to the class. - /// - public static partial class CompositionExtensions - { - /// - /// Registers essential services. - /// - /// - /// These services are all either created by the runtime or used to construct the runtime - /// - public static void RegisterEssentials(this Composition composition, - // TODO: Configs should be here too, the reason is that we only register them before the Core Runtime in aspnetcore - // then we pre-resolve them which means that the instance re-resolved later is different... BUT if we register that - // pre-resolved instance here again, then it will be the same instance re-resolved later, just like we are doing with - // IDbProviderFactoryCreator. - ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, IProfilingLogger profilingLogger, - IMainDom mainDom, - AppCaches appCaches, - IUmbracoDatabaseFactory databaseFactory, - TypeLoader typeLoader, - IRuntimeState state, - ITypeFinder typeFinder, - IIOHelper ioHelper, - IUmbracoVersion umbracoVersion, - IDbProviderFactoryCreator dbProviderFactoryCreator, - IHostingEnvironment hostingEnvironment, - IBackOfficeInfo backOfficeInfo) - { - composition.Services.AddUnique(logger); - composition.Services.AddUnique(loggerFactory); - composition.Services.AddUnique(profiler); - composition.Services.AddUnique(profilingLogger); - composition.Services.AddUnique(mainDom); - composition.Services.AddUnique(appCaches); - composition.Services.AddUnique(appCaches.RequestCache); - composition.Services.AddUnique(databaseFactory); - composition.Services.AddUnique(factory => factory.GetRequiredService().SqlContext); - composition.Services.AddUnique(typeLoader); - composition.Services.AddUnique(state); - composition.Services.AddUnique(typeFinder); - composition.Services.AddUnique(ioHelper); - composition.Services.AddUnique(umbracoVersion); - composition.Services.AddUnique(dbProviderFactoryCreator); - composition.Services.AddUnique(factory => factory.GetRequiredService().BulkSqlInsertProvider); - composition.Services.AddUnique(hostingEnvironment); - composition.Services.AddUnique(backOfficeInfo); - } - } -} diff --git a/src/Umbraco.Infrastructure/Events/QueuingEventDispatcher.cs b/src/Umbraco.Infrastructure/Events/QueuingEventDispatcher.cs index 6260aaa176..d9adf93eb5 100644 --- a/src/Umbraco.Infrastructure/Events/QueuingEventDispatcher.cs +++ b/src/Umbraco.Infrastructure/Events/QueuingEventDispatcher.cs @@ -1,5 +1,4 @@ -using Umbraco.Composing; -using Umbraco.Core.Composing; +using Umbraco.Core.Composing; using Umbraco.Core.IO; namespace Umbraco.Core.Events diff --git a/src/Umbraco.Infrastructure/HealthCheck/HealthCheckResults.cs b/src/Umbraco.Infrastructure/HealthCheck/HealthCheckResults.cs index 281b0fc445..37159b4a49 100644 --- a/src/Umbraco.Infrastructure/HealthCheck/HealthCheckResults.cs +++ b/src/Umbraco.Infrastructure/HealthCheck/HealthCheckResults.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using HeyRed.MarkdownSharp; using Microsoft.Extensions.Logging; -using Umbraco.Composing; +using Umbraco.Core; using Umbraco.Core.HealthCheck; namespace Umbraco.Infrastructure.HealthCheck @@ -14,7 +14,7 @@ namespace Umbraco.Infrastructure.HealthCheck private readonly Dictionary> _results; public readonly bool AllChecksSuccessful; - private ILogger Logger => Current.Logger; // TODO: inject + private ILogger Logger => StaticApplicationLogging.Logger; // TODO: inject public HealthCheckResults(IEnumerable checks) { diff --git a/src/Umbraco.Infrastructure/Models/PropertyTagsExtensions.cs b/src/Umbraco.Infrastructure/Models/PropertyTagsExtensions.cs index bea07879fb..f92dfe751b 100644 --- a/src/Umbraco.Infrastructure/Models/PropertyTagsExtensions.cs +++ b/src/Umbraco.Infrastructure/Models/PropertyTagsExtensions.cs @@ -4,7 +4,6 @@ using System.Linq; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -using Umbraco.Composing; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; @@ -219,7 +218,7 @@ namespace Umbraco.Core.Models } catch (Exception ex) { - Current.Logger.LogWarning(ex, "Could not automatically convert stored json value to an enumerable string '{Json}'", value.ToString()); + StaticApplicationLogging.Logger.LogWarning(ex, "Could not automatically convert stored json value to an enumerable string '{Json}'", value.ToString()); } break; diff --git a/src/Umbraco.Infrastructure/Persistence/DbConnectionExtensions.cs b/src/Umbraco.Infrastructure/Persistence/DbConnectionExtensions.cs index e00288d94c..82832a3627 100644 --- a/src/Umbraco.Infrastructure/Persistence/DbConnectionExtensions.cs +++ b/src/Umbraco.Infrastructure/Persistence/DbConnectionExtensions.cs @@ -5,7 +5,6 @@ using System.Data.SqlClient; using System.Linq; using Microsoft.Extensions.Logging; using StackExchange.Profiling.Data; -using Umbraco.Composing; using Umbraco.Core.Persistence.FaultHandling; namespace Umbraco.Core.Persistence @@ -53,7 +52,7 @@ namespace Umbraco.Core.Persistence catch (DbException e) { // Don't swallow this error, the exception is super handy for knowing "why" its not available - Current.Logger.LogWarning(e, "Configured database is reporting as not being available."); + StaticApplicationLogging.Logger.LogWarning(e, "Configured database is reporting as not being available."); return false; } diff --git a/src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseExtensions.cs b/src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseExtensions.cs index 4e5c3a113a..714721ef2c 100644 --- a/src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseExtensions.cs +++ b/src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseExtensions.cs @@ -1,5 +1,6 @@ using System; using Umbraco.Core.Persistence.Dtos; +using Umbraco.Core.Runtime; namespace Umbraco.Core.Persistence { @@ -15,7 +16,7 @@ namespace Umbraco.Core.Persistence /// /// Gets a key/value directly from the database, no scope, nothing. /// - /// Used by to determine the runtime state. + /// Used by to determine the runtime state. public static string GetFromKeyValueTable(this IUmbracoDatabase database, string key) { if (database is null) return null; diff --git a/src/Umbraco.Infrastructure/PropertyEditors/DataEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/DataEditor.cs index ebac6a763d..d74f285553 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/DataEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/DataEditor.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Diagnostics; using System.Runtime.Serialization; using Microsoft.Extensions.Logging; -using Umbraco.Composing; using Umbraco.Core.Composing; using Umbraco.Core.Services; using Umbraco.Core.Strings; diff --git a/src/Umbraco.Infrastructure/PropertyEditors/DataValueEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/DataValueEditor.cs index df9a06515c..fec245009f 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/DataValueEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/DataValueEditor.cs @@ -7,7 +7,6 @@ using System.Xml.Linq; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -using Umbraco.Composing; using Umbraco.Core.Composing; using Umbraco.Core.Models; using Umbraco.Core.Models.Editors; @@ -217,7 +216,7 @@ namespace Umbraco.Core.PropertyEditors var result = TryConvertValueToCrlType(editorValue.Value); if (result.Success == false) { - Current.Logger.LogWarning("The value {EditorValue} cannot be converted to the type {StorageTypeValue}", editorValue.Value, ValueTypes.ToStorageType(ValueType)); + StaticApplicationLogging.Logger.LogWarning("The value {EditorValue} cannot be converted to the type {StorageTypeValue}", editorValue.Value, ValueTypes.ToStorageType(ValueType)); return null; } return result.Result; diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/GridValueConverter.cs b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/GridValueConverter.cs index 83866d958f..f601dac6d9 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/GridValueConverter.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/GridValueConverter.cs @@ -6,7 +6,6 @@ using Newtonsoft.Json.Linq; using Umbraco.Core.Composing; using Umbraco.Core.Configuration.Grid; using Umbraco.Core.Models.PublishedContent; -using Umbraco.Composing; namespace Umbraco.Core.PropertyEditors.ValueConverters { @@ -92,7 +91,7 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters } catch (Exception ex) { - Current.Logger.LogError(ex, "Could not parse the string '{JsonString}' to a json object", sourceString); + StaticApplicationLogging.Logger.LogError(ex, "Could not parse the string '{JsonString}' to a json object", sourceString); } } diff --git a/src/Umbraco.Infrastructure/Routing/NotFoundHandlerHelper.cs b/src/Umbraco.Infrastructure/Routing/NotFoundHandlerHelper.cs index ae50baa5b3..80aa0f1bc6 100644 --- a/src/Umbraco.Infrastructure/Routing/NotFoundHandlerHelper.cs +++ b/src/Umbraco.Infrastructure/Routing/NotFoundHandlerHelper.cs @@ -2,7 +2,6 @@ using System.Globalization; using System.Linq; using Microsoft.Extensions.Logging; -using Umbraco.Composing; using Umbraco.Core; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Configuration.UmbracoSettings; @@ -108,7 +107,7 @@ namespace Umbraco.Web.Routing } catch (Exception ex) { - Current.Logger.LogError(ex, "Could not parse xpath expression: {ContentXPath}", errorPage.ContentXPath); + StaticApplicationLogging.Logger.LogError(ex, "Could not parse xpath expression: {ContentXPath}", errorPage.ContentXPath); return null; } } diff --git a/src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs b/src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs index dae8bcbf69..a0c1718c07 100644 --- a/src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs +++ b/src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs @@ -1,426 +1,75 @@ using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; -using Umbraco.Core.Cache; using Umbraco.Core.Composing; -using Umbraco.Core.Configuration; -using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Events; -using Umbraco.Core.Exceptions; using Umbraco.Core.Hosting; -using Umbraco.Core.IO; using Umbraco.Core.Logging; -using Umbraco.Core.Persistence; -using Umbraco.Core.Persistence.Mappers; namespace Umbraco.Core.Runtime { - /// - /// Represents the Core Umbraco runtime. - /// - /// Does not handle any of the web-related aspects of Umbraco (startup, etc). It - /// should be possible to use this runtime in console apps. public class CoreRuntime : IRuntime { - private ComponentCollection _components; - // runtime state, this instance will get replaced again once the essential services are available to run the check - private RuntimeState _state = RuntimeState.Booting(); - private readonly IUmbracoBootPermissionChecker _umbracoBootPermissionChecker; - private readonly GlobalSettings _globalSettings; - private readonly ConnectionStrings _connectionStrings; + public IRuntimeState State { get; } - private IServiceProvider _serviceProvider; + private readonly ComponentCollection _components; + private readonly IUmbracoBootPermissionChecker _umbracoBootPermissionChecker; + private readonly IApplicationShutdownRegistry _applicationShutdownRegistry; + private readonly IProfilingLogger _profilingLogger; + private readonly IMainDom _mainDom; public CoreRuntime( - GlobalSettings globalSettings, - ConnectionStrings connectionStrings, - IUmbracoVersion umbracoVersion, - IIOHelper ioHelper, - ILoggerFactory loggerFactory, - IProfiler profiler, + IRuntimeState state, + ComponentCollection components, IUmbracoBootPermissionChecker umbracoBootPermissionChecker, - IHostingEnvironment hostingEnvironment, - IBackOfficeInfo backOfficeInfo, - IDbProviderFactoryCreator dbProviderFactoryCreator, - IMainDom mainDom, - ITypeFinder typeFinder, - AppCaches appCaches) + IApplicationShutdownRegistry applicationShutdownRegistry, + IProfilingLogger profilingLogger, + IMainDom mainDom) { - _globalSettings = globalSettings; - _connectionStrings = connectionStrings; - - IOHelper = ioHelper; - AppCaches = appCaches; - UmbracoVersion = umbracoVersion; - Profiler = profiler; - HostingEnvironment = hostingEnvironment; - BackOfficeInfo = backOfficeInfo; - DbProviderFactoryCreator = dbProviderFactoryCreator; - - RuntimeLoggerFactory = loggerFactory; + State = state; + _components = components; _umbracoBootPermissionChecker = umbracoBootPermissionChecker; - - Logger = loggerFactory.CreateLogger(); - MainDom = mainDom; - TypeFinder = typeFinder; - - _globalSettings = globalSettings; - _connectionStrings = connectionStrings; - + _applicationShutdownRegistry = applicationShutdownRegistry; + _profilingLogger = profilingLogger; + _mainDom = mainDom; } + - /// - /// Gets the logger. - /// - private ILogger Logger { get; } - - public ILoggerFactory RuntimeLoggerFactory { get; } - - protected IBackOfficeInfo BackOfficeInfo { get; } - - public IDbProviderFactoryCreator DbProviderFactoryCreator { get; } - - /// - /// Gets the profiler. - /// - protected IProfiler Profiler { get; } - - /// - /// Gets the profiling logger. - /// - public IProfilingLogger ProfilingLogger { get; private set; } - - /// - /// Gets the - /// - protected ITypeFinder TypeFinder { get; } - - /// - /// Gets the - /// - protected IIOHelper IOHelper { get; } - - protected IHostingEnvironment HostingEnvironment { get; } - public AppCaches AppCaches { get; } - public IUmbracoVersion UmbracoVersion { get; } - - /// - public IRuntimeState State => _state; - - public IMainDom MainDom { get; } - - /// - public virtual void Configure(IServiceCollection services) + public void Start() { - if (services is null) throw new ArgumentNullException(nameof(services)); - - - // create and register the essential services - // ie the bare minimum required to boot - - // the boot loader boots using a container scope, so anything that is PerScope will - // be disposed after the boot loader has booted, and anything else will remain. - // note that this REQUIRES that perWebRequestScope has NOT been enabled yet, else - // the container will fail to create a scope since there is no http context when - // the application starts. - // the boot loader is kept in the runtime for as long as Umbraco runs, and components - // are NOT disposed - which is not a big deal as long as they remain lightweight - // objects. - - var umbracoVersion = new UmbracoVersion(); - var profilingLogger = ProfilingLogger = new ProfilingLogger(Logger, Profiler); - using (var timer = profilingLogger.TraceDuration( - $"Booting Umbraco {umbracoVersion.SemanticVersion.ToSemanticString()}.", - "Booted.", - "Boot failed.")) - { - - Logger.LogInformation("Booting site '{HostingSiteName}', app '{HostingApplicationId}', path '{HostingPhysicalPath}', server '{MachineName}'.", - HostingEnvironment?.SiteName, - HostingEnvironment?.ApplicationId, - HostingEnvironment?.ApplicationPhysicalPath, - NetworkHelper.MachineName); - Logger.LogDebug("Runtime: {Runtime}", GetType().FullName); - - AppDomain.CurrentDomain.SetData("DataDirectory", HostingEnvironment?.MapPathContentRoot(Constants.SystemDirectories.Data)); - - // application environment - ConfigureUnhandledException(); - Configure(services, timer); - } - } - - /// - /// Configure the runtime within a timer. - /// - private void Configure(IServiceCollection services, DisposableTimer timer) - { - if (services is null) throw new ArgumentNullException(nameof(services)); - if (timer is null) throw new ArgumentNullException(nameof(timer)); - - Composition composition = null; - - try - { - // run handlers - OnRuntimeBoot(); - - // database factory - var databaseFactory = CreateDatabaseFactory(); - - // type finder/loader - var typeLoader = new TypeLoader(TypeFinder, AppCaches.RuntimeCache, new DirectoryInfo(HostingEnvironment.LocalTempPath), RuntimeLoggerFactory.CreateLogger(), ProfilingLogger); - - // re-create the state object with the essential services - _state = new RuntimeState(_globalSettings, UmbracoVersion, databaseFactory, RuntimeLoggerFactory.CreateLogger()); - - // create the composition - composition = new Composition(services, typeLoader, ProfilingLogger, _state, IOHelper, AppCaches); - - composition.RegisterEssentials(Logger, RuntimeLoggerFactory, Profiler, ProfilingLogger, MainDom, AppCaches, databaseFactory, typeLoader, _state, TypeFinder, IOHelper, UmbracoVersion, DbProviderFactoryCreator, HostingEnvironment, BackOfficeInfo); - - // register ourselves (TODO: Should we put this in RegisterEssentials?) - composition.Services.AddSingleton(_ => this); - - // run handlers - OnRuntimeEssentials(composition, AppCaches, typeLoader, databaseFactory); - - try - { - // determine our runtime level - DetermineRuntimeLevel(databaseFactory); - } - finally - { - // always run composers - RunComposers(typeLoader, composition); - } - - composition.RegisterBuilders(); - // TODO: We "should" be able to avoid this - _serviceProvider = composition.Services.BuildServiceProvider(); - } - catch (Exception e) - { - var bfe = e as BootFailedException ?? new BootFailedException("Boot failed.", e); - - if (_state != null) - { - _state.Level = RuntimeLevel.BootFailed; - _state.BootFailedException = bfe; - } - - timer?.Fail(exception: bfe); // be sure to log the exception - even if we repeat ourselves - - // if something goes wrong above, we may end up with no factory - // meaning nothing can get the runtime state, etc - so let's try - // to make sure we have a factory - - try - { - composition?.RegisterBuilders(); - // TODO: We "should" be able to avoid this - _serviceProvider = composition?.Services.BuildServiceProvider(); - } - catch { /* yea */ } - - - Debugger.Break(); - - // throwing here can cause w3wp to hard-crash and we want to avoid it. - // instead, we're logging the exception and setting level to BootFailed. - // various parts of Umbraco such as UmbracoModule and UmbracoDefaultOwinStartup - // understand this and will nullify themselves, while UmbracoModule will - // throw a BootFailedException for every requests. - } - } - - public void Start(IServiceProvider serviceProvider) - { - // Capture for CreateDatabaseFactory - // TODO: MSDI - Split core runtime into configure vs startup classes - // TODO: MSDI - Fix CreateDatabaseFactory - _serviceProvider = serviceProvider; - - if (_state.Level <= RuntimeLevel.BootFailed) + if (State.Level <= RuntimeLevel.BootFailed) throw new InvalidOperationException($"Cannot start the runtime if the runtime level is less than or equal to {RuntimeLevel.BootFailed}"); // throws if not full-trust _umbracoBootPermissionChecker.ThrowIfNotPermissions(); - var hostingEnvironmentLifetime = serviceProvider.GetService(); + var hostingEnvironmentLifetime = _applicationShutdownRegistry; if (hostingEnvironmentLifetime == null) throw new InvalidOperationException($"An instance of {typeof(IApplicationShutdownRegistry)} could not be resolved from the container, ensure that one if registered in your runtime before calling {nameof(IRuntime)}.{nameof(Start)}"); // acquire the main domain - if this fails then anything that should be registered with MainDom will not operate - AcquireMainDom(MainDom, serviceProvider.GetService()); + AcquireMainDom(_mainDom, _applicationShutdownRegistry); // create & initialize the components - _components = serviceProvider.GetService(); _components.Initialize(); } - protected virtual void ConfigureUnhandledException() - { - //take care of unhandled exceptions - there is nothing we can do to - // prevent the launch process to go down but at least we can try - // and log the exception - AppDomain.CurrentDomain.UnhandledException += (_, args) => - { - var exception = (Exception)args.ExceptionObject; - var isTerminating = args.IsTerminating; // always true? - - var msg = "Unhandled exception in AppDomain"; - if (isTerminating) msg += " (terminating)"; - msg += "."; - Logger.LogError(exception, msg); - }; - } - - private void RunComposers(TypeLoader typeLoader, Composition composition) - { - // get composers, and compose - var composerTypes = ResolveComposerTypes(typeLoader); - - IEnumerable enableDisableAttributes; - using (ProfilingLogger.DebugDuration("Scanning enable/disable composer attributes")) - { - enableDisableAttributes = typeLoader.GetAssemblyAttributes(typeof(EnableComposerAttribute), typeof(DisableComposerAttribute)); - } - - var composers = new Composers(composition, composerTypes, enableDisableAttributes, RuntimeLoggerFactory.CreateLogger(), ProfilingLogger); - composers.Compose(); - } - - private bool AcquireMainDom(IMainDom mainDom, IApplicationShutdownRegistry applicationShutdownRegistry) - { - using (var timer = ProfilingLogger.DebugDuration("Acquiring MainDom.", "Acquired.")) - { - try - { - return mainDom.Acquire(applicationShutdownRegistry); - } - catch - { - timer?.Fail(); - throw; - } - } - } - - private void DetermineRuntimeLevel(IUmbracoDatabaseFactory databaseFactory) - { - using var timer = ProfilingLogger.DebugDuration("Determining runtime level.", "Determined."); - - try - { - _state.DetermineRuntimeLevel(); - - Logger.LogDebug("Runtime level: {RuntimeLevel} - {RuntimeLevelReason}", _state.Level, _state.Reason); - - if (_state.Level == RuntimeLevel.Upgrade) - { - Logger.LogDebug("Configure database factory for upgrades."); - databaseFactory.ConfigureForUpgrade(); - } - } - catch - { - _state.Level = RuntimeLevel.BootFailed; - _state.Reason = RuntimeLevelReason.BootFailedOnException; - timer?.Fail(); - throw; - } - } - - private IEnumerable ResolveComposerTypes(TypeLoader typeLoader) - { - using (var timer = ProfilingLogger.TraceDuration("Resolving composer types.", "Resolved.")) - { - try - { - return GetComposerTypes(typeLoader); - } - catch - { - timer?.Fail(); - throw; - } - } - } - - /// - public virtual void Terminate() + public void Terminate() { _components?.Terminate(); } - #region Getters - - // getters can be implemented by runtimes inheriting from CoreRuntime - - /// - /// Gets all composer types. - /// - protected virtual IEnumerable GetComposerTypes(TypeLoader typeLoader) - => typeLoader.GetTypes(); - - /// - /// Returns the application path of the site/solution - /// - /// - /// - /// By default is null which means it's not running in any virtual folder. If the site is running in a virtual folder, this - /// can be overridden and the virtual path returned (i.e. /mysite/) - /// - protected virtual string GetApplicationRootPath() - => null; - - /// - /// Creates the database factory. - /// - /// This is strictly internal, for tests only. - protected internal virtual IUmbracoDatabaseFactory CreateDatabaseFactory() - => new UmbracoDatabaseFactory( - RuntimeLoggerFactory.CreateLogger(), - RuntimeLoggerFactory, - Options.Create(_globalSettings), - Options.Create(_connectionStrings), - new Lazy(() => + private void AcquireMainDom(IMainDom mainDom, IApplicationShutdownRegistry applicationShutdownRegistry) + { + using (var timer = _profilingLogger.DebugDuration("Acquiring MainDom.", "Acquired.")) + { + try { - if (_serviceProvider == null) - { - throw new ApplicationException("_serviceProvider should have been captured from CoreRuntime.Start (or built during configure)"); - } - return _serviceProvider.GetRequiredService(); - }), - DbProviderFactoryCreator); - - - #endregion - - #region Events - - protected void OnRuntimeBoot() - { - RuntimeOptions.DoRuntimeBoot(ProfilingLogger); - RuntimeBooting?.Invoke(this, ProfilingLogger); + mainDom.Acquire(applicationShutdownRegistry); + } + catch + { + timer?.Fail(); + throw; + } + } } - - protected void OnRuntimeEssentials(Composition composition, AppCaches appCaches, TypeLoader typeLoader, IUmbracoDatabaseFactory databaseFactory) - { - RuntimeOptions.DoRuntimeEssentials(composition, appCaches, typeLoader, databaseFactory); - RuntimeEssentials?.Invoke(this, new RuntimeEssentialsEventArgs(composition, appCaches, typeLoader, databaseFactory)); - } - - public event TypedEventHandler RuntimeBooting; - public event TypedEventHandler RuntimeEssentials; - - #endregion - } } diff --git a/src/Umbraco.Infrastructure/Runtime/CoreRuntimeBootstrapper.cs b/src/Umbraco.Infrastructure/Runtime/CoreRuntimeBootstrapper.cs new file mode 100644 index 0000000000..9b576324bd --- /dev/null +++ b/src/Umbraco.Infrastructure/Runtime/CoreRuntimeBootstrapper.cs @@ -0,0 +1,376 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Umbraco.Core.Cache; +using Umbraco.Core.Composing; +using Umbraco.Core.Configuration; +using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Events; +using Umbraco.Core.Exceptions; +using Umbraco.Core.Hosting; +using Umbraco.Core.IO; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence; +using Umbraco.Core.Persistence.Mappers; + +namespace Umbraco.Core.Runtime +{ + /// + /// Bootstraps the Core Umbraco runtime. + /// + /// Does not handle any of the web-related aspects of Umbraco (startup, etc). It + /// should be possible to use this runtime in console apps. + public class CoreRuntimeBootstrapper + { + // runtime state, this instance will get replaced again once the essential services are available to run the check + private RuntimeState _state = RuntimeState.Booting(); + private readonly IUmbracoBootPermissionChecker _umbracoBootPermissionChecker; + private readonly GlobalSettings _globalSettings; + private readonly ConnectionStrings _connectionStrings; + + public CoreRuntimeBootstrapper( + GlobalSettings globalSettings, + ConnectionStrings connectionStrings, + IUmbracoVersion umbracoVersion, + IIOHelper ioHelper, + ILoggerFactory loggerFactory, + IProfiler profiler, + IUmbracoBootPermissionChecker umbracoBootPermissionChecker, + IHostingEnvironment hostingEnvironment, + IBackOfficeInfo backOfficeInfo, + IDbProviderFactoryCreator dbProviderFactoryCreator, + IMainDom mainDom, + ITypeFinder typeFinder, + AppCaches appCaches) + { + _globalSettings = globalSettings; + _connectionStrings = connectionStrings; + + IOHelper = ioHelper; + AppCaches = appCaches; + UmbracoVersion = umbracoVersion; + Profiler = profiler; + HostingEnvironment = hostingEnvironment; + BackOfficeInfo = backOfficeInfo; + DbProviderFactoryCreator = dbProviderFactoryCreator; + + RuntimeLoggerFactory = loggerFactory; + _umbracoBootPermissionChecker = umbracoBootPermissionChecker; + + Logger = loggerFactory.CreateLogger(); + MainDom = mainDom; + TypeFinder = typeFinder; + } + + /// + /// Gets the logger. + /// + private ILogger Logger { get; } + + public ILoggerFactory RuntimeLoggerFactory { get; } + + protected IBackOfficeInfo BackOfficeInfo { get; } + + public IDbProviderFactoryCreator DbProviderFactoryCreator { get; } + + /// + /// Gets the profiler. + /// + protected IProfiler Profiler { get; } + + /// + /// Gets the profiling logger. + /// + public IProfilingLogger ProfilingLogger { get; private set; } + + /// + /// Gets the + /// + protected ITypeFinder TypeFinder { get; } + + /// + /// Gets the + /// + protected IIOHelper IOHelper { get; } + + protected IHostingEnvironment HostingEnvironment { get; } + public AppCaches AppCaches { get; } + public IUmbracoVersion UmbracoVersion { get; } + + /// + public IRuntimeState State => _state; + + public IMainDom MainDom { get; } + + /// + public virtual void Configure(IServiceCollection services) + { + if (services is null) throw new ArgumentNullException(nameof(services)); + + + // create and register the essential services + // ie the bare minimum required to boot + + // the boot loader boots using a container scope, so anything that is PerScope will + // be disposed after the boot loader has booted, and anything else will remain. + // note that this REQUIRES that perWebRequestScope has NOT been enabled yet, else + // the container will fail to create a scope since there is no http context when + // the application starts. + // the boot loader is kept in the runtime for as long as Umbraco runs, and components + // are NOT disposed - which is not a big deal as long as they remain lightweight + // objects. + + var umbracoVersion = new UmbracoVersion(); + var profilingLogger = ProfilingLogger = new ProfilingLogger(Logger, Profiler); + using (var timer = profilingLogger.TraceDuration( + $"Booting Umbraco {umbracoVersion.SemanticVersion.ToSemanticString()}.", + "Booted.", + "Boot failed.")) + { + + Logger.LogInformation("Booting site '{HostingSiteName}', app '{HostingApplicationId}', path '{HostingPhysicalPath}', server '{MachineName}'.", + HostingEnvironment?.SiteName, + HostingEnvironment?.ApplicationId, + HostingEnvironment?.ApplicationPhysicalPath, + NetworkHelper.MachineName); + Logger.LogDebug("Runtime: {Runtime}", GetType().FullName); + + AppDomain.CurrentDomain.SetData("DataDirectory", HostingEnvironment?.MapPathContentRoot(Constants.SystemDirectories.Data)); + + // application environment + ConfigureUnhandledException(); + Configure(services, timer); + } + } + + /// + /// Configure the runtime within a timer. + /// + private void Configure(IServiceCollection services, DisposableTimer timer) + { + if (services is null) throw new ArgumentNullException(nameof(services)); + if (timer is null) throw new ArgumentNullException(nameof(timer)); + + Composition composition = null; + + try + { + // run handlers + OnRuntimeBoot(); + + // type finder/loader + var typeLoader = new TypeLoader(TypeFinder, AppCaches.RuntimeCache, + new DirectoryInfo(HostingEnvironment.LocalTempPath), + RuntimeLoggerFactory.CreateLogger(), ProfilingLogger); + + services.AddUnique(Logger); + services.AddUnique(RuntimeLoggerFactory); + services.AddUnique(_umbracoBootPermissionChecker); + services.AddUnique(Profiler); + services.AddUnique(ProfilingLogger); + services.AddUnique(MainDom); + services.AddUnique(AppCaches); + services.AddUnique(AppCaches.RequestCache); + services.AddUnique(typeLoader); + services.AddUnique(TypeFinder); + services.AddUnique(IOHelper); + services.AddUnique(UmbracoVersion); + services.AddUnique(DbProviderFactoryCreator); + services.AddUnique(HostingEnvironment); + services.AddUnique(BackOfficeInfo); + services.AddUnique(); + + // NOTE: This instance of IUmbracoDatabaseFactory is only used to determine runtime state. + var bootstrapDatabaseFactory = CreateBootstrapDatabaseFactory(); + + // after bootstrapping we let the container wire up for us. + services.AddUnique(); + services.AddUnique(factory => factory.GetRequiredService().SqlContext); + services.AddUnique(factory => factory.GetRequiredService().BulkSqlInsertProvider); + + // re-create the state object with the essential services + _state = new RuntimeState(_globalSettings, UmbracoVersion, bootstrapDatabaseFactory, RuntimeLoggerFactory.CreateLogger()); + services.AddUnique(_state); + + + // create the composition + composition = new Composition(services, typeLoader, ProfilingLogger, _state, IOHelper, AppCaches); + + // run handlers + OnRuntimeEssentials(composition, AppCaches, typeLoader, bootstrapDatabaseFactory); + + try + { + // determine our runtime level + DetermineRuntimeLevel(bootstrapDatabaseFactory); + } + finally + { + // always run composers + RunComposers(typeLoader, composition); + } + + } + catch (Exception e) + { + var bfe = e as BootFailedException ?? new BootFailedException("Boot failed.", e); + + if (_state != null) + { + _state.Level = RuntimeLevel.BootFailed; + _state.BootFailedException = bfe; + } + + timer?.Fail(exception: bfe); // be sure to log the exception - even if we repeat ourselves + + Debugger.Break(); + + // throwing here can cause w3wp to hard-crash and we want to avoid it. + // instead, we're logging the exception and setting level to BootFailed. + // various parts of Umbraco such as UmbracoModule and UmbracoDefaultOwinStartup + // understand this and will nullify themselves, while UmbracoModule will + // throw a BootFailedException for every requests. + } + finally + { + composition?.RegisterBuilders(); + } + } + + protected virtual void ConfigureUnhandledException() + { + //take care of unhandled exceptions - there is nothing we can do to + // prevent the launch process to go down but at least we can try + // and log the exception + AppDomain.CurrentDomain.UnhandledException += (_, args) => + { + var exception = (Exception)args.ExceptionObject; + var isTerminating = args.IsTerminating; // always true? + + var msg = "Unhandled exception in AppDomain"; + if (isTerminating) msg += " (terminating)"; + msg += "."; + Logger.LogError(exception, msg); + }; + } + + private void RunComposers(TypeLoader typeLoader, Composition composition) + { + // get composers, and compose + var composerTypes = ResolveComposerTypes(typeLoader); + + IEnumerable enableDisableAttributes; + using (ProfilingLogger.DebugDuration("Scanning enable/disable composer attributes")) + { + enableDisableAttributes = typeLoader.GetAssemblyAttributes(typeof(EnableComposerAttribute), typeof(DisableComposerAttribute)); + } + + var composers = new Composers(composition, composerTypes, enableDisableAttributes, RuntimeLoggerFactory.CreateLogger(), ProfilingLogger); + composers.Compose(); + } + + + private void DetermineRuntimeLevel(IUmbracoDatabaseFactory databaseFactory) + { + using var timer = ProfilingLogger.DebugDuration("Determining runtime level.", "Determined."); + + try + { + _state.DetermineRuntimeLevel(); + + Logger.LogDebug("Runtime level: {RuntimeLevel} - {RuntimeLevelReason}", _state.Level, _state.Reason); + + if (_state.Level == RuntimeLevel.Upgrade) + { + Logger.LogDebug("Configure database factory for upgrades."); + databaseFactory.ConfigureForUpgrade(); + } + } + catch + { + _state.Level = RuntimeLevel.BootFailed; + _state.Reason = RuntimeLevelReason.BootFailedOnException; + timer?.Fail(); + throw; + } + } + + private IEnumerable ResolveComposerTypes(TypeLoader typeLoader) + { + using (var timer = ProfilingLogger.TraceDuration("Resolving composer types.", "Resolved.")) + { + try + { + return GetComposerTypes(typeLoader); + } + catch + { + timer?.Fail(); + throw; + } + } + } + + #region Getters + + // getters can be implemented by runtimes inheriting from CoreRuntime + + /// + /// Gets all composer types. + /// + protected virtual IEnumerable GetComposerTypes(TypeLoader typeLoader) + => typeLoader.GetTypes(); + + /// + /// Returns the application path of the site/solution + /// + /// + /// + /// By default is null which means it's not running in any virtual folder. If the site is running in a virtual folder, this + /// can be overridden and the virtual path returned (i.e. /mysite/) + /// + protected virtual string GetApplicationRootPath() + => null; + + /// + /// Creates the database factory. + /// + /// This is strictly internal, for tests only. + protected internal virtual IUmbracoDatabaseFactory CreateBootstrapDatabaseFactory() + => new UmbracoDatabaseFactory( + RuntimeLoggerFactory.CreateLogger(), + RuntimeLoggerFactory, + Options.Create(_globalSettings), + Options.Create(_connectionStrings), + new Lazy(() => new MapperCollection(Enumerable.Empty())), + DbProviderFactoryCreator); + + + #endregion + + #region Events + + protected void OnRuntimeBoot() + { + RuntimeOptions.DoRuntimeBoot(ProfilingLogger); + RuntimeBooting?.Invoke(this, ProfilingLogger); + } + + protected void OnRuntimeEssentials(Composition composition, AppCaches appCaches, TypeLoader typeLoader, IUmbracoDatabaseFactory databaseFactory) + { + RuntimeOptions.DoRuntimeEssentials(composition, appCaches, typeLoader, databaseFactory); + RuntimeEssentials?.Invoke(this, new RuntimeEssentialsEventArgs(composition, appCaches, typeLoader, databaseFactory)); + } + + public event TypedEventHandler RuntimeBooting; + public event TypedEventHandler RuntimeEssentials; + + #endregion + + } +} diff --git a/src/Umbraco.Infrastructure/Services/Implement/ContentService.cs b/src/Umbraco.Infrastructure/Services/Implement/ContentService.cs index b796f9b686..120c0500e2 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/ContentService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/ContentService.cs @@ -1767,7 +1767,7 @@ namespace Umbraco.Core.Services.Implement #region Delete /// - public OperationResult Delete(IContent content, int userId) + public OperationResult Delete(IContent content, int userId = Constants.Security.SuperUserId) { var evtMsgs = EventMessagesFactory.Get(); @@ -1897,7 +1897,7 @@ namespace Umbraco.Core.Services.Implement #region Move, RecycleBin /// - public OperationResult MoveToRecycleBin(IContent content, int userId) + public OperationResult MoveToRecycleBin(IContent content, int userId = Constants.Security.SuperUserId) { var evtMsgs = EventMessagesFactory.Get(); var moves = new List<(IContent, string)>(); diff --git a/src/Umbraco.Infrastructure/Services/Implement/EntityXmlSerializer.cs b/src/Umbraco.Infrastructure/Services/Implement/EntityXmlSerializer.cs index d69297eb57..2d0a44986c 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/EntityXmlSerializer.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/EntityXmlSerializer.cs @@ -5,7 +5,6 @@ using System.Linq; using System.Net; using System.Xml.Linq; using Newtonsoft.Json; -using Umbraco.Composing; using Umbraco.Core.Composing; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; diff --git a/src/Umbraco.Infrastructure/Services/Implement/LocalizedTextServiceFileSources.cs b/src/Umbraco.Infrastructure/Services/Implement/LocalizedTextServiceFileSources.cs index b4c49b9509..78bb71bcf1 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/LocalizedTextServiceFileSources.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/LocalizedTextServiceFileSources.cs @@ -5,7 +5,6 @@ using System.IO; using System.Linq; using System.Xml; using System.Xml.Linq; -using Umbraco.Composing; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Microsoft.Extensions.Logging; diff --git a/src/Umbraco.Infrastructure/Suspendable.cs b/src/Umbraco.Infrastructure/Suspendable.cs index e03931d0d7..33677062f1 100644 --- a/src/Umbraco.Infrastructure/Suspendable.cs +++ b/src/Umbraco.Infrastructure/Suspendable.cs @@ -1,5 +1,5 @@ using Microsoft.Extensions.Logging; -using Umbraco.Composing; +using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Examine; using Umbraco.Web.Cache; @@ -30,7 +30,7 @@ namespace Umbraco.Web public static void SuspendDocumentCache() { - Current.Logger.LogInformation("Suspend document cache."); + StaticApplicationLogging.Logger.LogInformation("Suspend document cache."); _suspended = true; } @@ -38,7 +38,7 @@ namespace Umbraco.Web { _suspended = false; - Current.Logger.LogInformation("Resume document cache (reload:{Tried}).", _tried); + StaticApplicationLogging.Logger.LogInformation("Resume document cache (reload:{Tried}).", _tried); if (_tried == false) return; _tried = false; @@ -74,7 +74,7 @@ namespace Umbraco.Web { _suspended = false; - Current.Logger.LogInformation("Resume indexers (rebuild:{Tried}).", _tried); + StaticApplicationLogging.Logger.LogInformation("Resume indexers (rebuild:{Tried}).", _tried); if (_tried == false) return; _tried = false; @@ -91,13 +91,13 @@ namespace Umbraco.Web public static void Suspend() { - Current.Logger.LogInformation("Suspend scheduled publishing."); + StaticApplicationLogging.Logger.LogInformation("Suspend scheduled publishing."); _suspended = true; } public static void Resume() { - Current.Logger.LogInformation("Resume scheduled publishing."); + StaticApplicationLogging.Logger.LogInformation("Resume scheduled publishing."); _suspended = false; } } diff --git a/src/Umbraco.Infrastructure/Sync/ServerMessengerBase.cs b/src/Umbraco.Infrastructure/Sync/ServerMessengerBase.cs index d115bc7595..f2918ffe96 100644 --- a/src/Umbraco.Infrastructure/Sync/ServerMessengerBase.cs +++ b/src/Umbraco.Infrastructure/Sync/ServerMessengerBase.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; -using Umbraco.Composing; using Umbraco.Core.Cache; using Microsoft.Extensions.Logging; @@ -157,7 +156,7 @@ namespace Umbraco.Core.Sync { if (refresher == null) throw new ArgumentNullException(nameof(refresher)); - Current.Logger.LogDebug("Invoking refresher {RefresherType} on local server for message type RefreshByPayload", refresher.GetType()); + StaticApplicationLogging.Logger.LogDebug("Invoking refresher {RefresherType} on local server for message type RefreshByPayload", refresher.GetType()); var payloadRefresher = refresher as IPayloadCacheRefresher; if (payloadRefresher == null) @@ -179,7 +178,7 @@ namespace Umbraco.Core.Sync { if (refresher == null) throw new ArgumentNullException(nameof(refresher)); - Current.Logger.LogDebug("Invoking refresher {RefresherType} on local server for message type {MessageType}", refresher.GetType(), messageType); + StaticApplicationLogging.Logger.LogDebug("Invoking refresher {RefresherType} on local server for message type {MessageType}", refresher.GetType(), messageType); switch (messageType) { @@ -240,7 +239,7 @@ namespace Umbraco.Core.Sync { if (refresher == null) throw new ArgumentNullException(nameof(refresher)); - Current.Logger.LogDebug("Invoking refresher {RefresherType} on local server for message type {MessageType}", refresher.GetType(), messageType); + StaticApplicationLogging.Logger.LogDebug("Invoking refresher {RefresherType} on local server for message type {MessageType}", refresher.GetType(), messageType); var typedRefresher = refresher as ICacheRefresher; diff --git a/src/Umbraco.Infrastructure/Trees/TreeNode.cs b/src/Umbraco.Infrastructure/Trees/TreeNode.cs index 5cf1054fc8..ad64f3dc5e 100644 --- a/src/Umbraco.Infrastructure/Trees/TreeNode.cs +++ b/src/Umbraco.Infrastructure/Trees/TreeNode.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Runtime.Serialization; -using Umbraco.Composing; using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; @@ -106,20 +105,8 @@ namespace Umbraco.Web.Models.Trees { get { - if (IconIsClass) - return string.Empty; - - //absolute path with or without tilde - if (Icon.StartsWith("~") || Icon.StartsWith("/")) - return Current.IOHelper.ResolveUrl("~" + Icon.TrimStart('~')); - - //legacy icon path - - // TODO: replace this when we have something other than Current.Configs available - var backOfficePath = Current.GlobalSettings.GetUmbracoMvcArea(Current.HostingEnvironment); - - - return string.Format("{0}images/umbraco/{1}", backOfficePath.EnsureEndsWith("/"), Icon); + // TODO: Is this ever actually used? If not remove, if so, add setter. + return string.Empty; } } diff --git a/src/Umbraco.Tests.Integration/RuntimeTests.cs b/src/Umbraco.Tests.Integration/RuntimeTests.cs index 4070a9ea74..db7f7499e3 100644 --- a/src/Umbraco.Tests.Integration/RuntimeTests.cs +++ b/src/Umbraco.Tests.Integration/RuntimeTests.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; @@ -10,6 +11,8 @@ using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Persistence; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Runtime; using Umbraco.Extensions; using Umbraco.Tests.Common; @@ -43,7 +46,6 @@ namespace Umbraco.Tests.Integration [Test] public void Boot_Core_Runtime() { - // TODO: MSDI - cleanup after initial merge. var services = new ServiceCollection().AddLazySupport(); // Special case since we are not using the Generic Host, we need to manually add an AspNetCore service to the container @@ -64,6 +66,7 @@ namespace Umbraco.Tests.Integration var webRoutingSettings = new WebRoutingSettings(); services.AddTransient(x => Options.Create(globalSettings)); + services.AddTransient(x => Options.Create(connectionStrings)); services.AddTransient(x => Options.Create(contentSettings)); services.AddTransient(x => Options.Create(coreDebugSettings)); services.AddTransient(x => Options.Create(nuCacheSettings)); @@ -73,26 +76,30 @@ namespace Umbraco.Tests.Integration services.AddSingleton(typeof(ILogger<>), typeof(Logger<>)); // Create the core runtime - var coreRuntime = new CoreRuntime(globalSettings, connectionStrings, testHelper.GetUmbracoVersion(), + var bootstrapper = new CoreRuntimeBootstrapper(globalSettings, connectionStrings, testHelper.GetUmbracoVersion(), testHelper.IOHelper, testHelper.ConsoleLoggerFactory, testHelper.Profiler, testHelper.UmbracoBootPermissionChecker, testHelper.GetHostingEnvironment(), testHelper.GetBackOfficeInfo(), testHelper.DbProviderFactoryCreator, testHelper.MainDom, testHelper.GetTypeFinder(), AppCaches.NoCache); - coreRuntime.Configure(services); + bootstrapper.Configure(services); - Assert.IsTrue(coreRuntime.MainDom.IsMainDom); - Assert.IsNull(coreRuntime.State.BootFailedException); - Assert.AreEqual(RuntimeLevel.Install, coreRuntime.State.Level); + Assert.IsTrue(bootstrapper.MainDom.IsMainDom); + Assert.IsNull(bootstrapper.State.BootFailedException); + Assert.AreEqual(RuntimeLevel.Install, bootstrapper.State.Level); Assert.IsTrue(MyComposer.IsComposed); Assert.IsFalse(MyComponent.IsInit); Assert.IsFalse(MyComponent.IsTerminated); - coreRuntime.Start(services.BuildServiceProvider()); + var container = services.BuildServiceProvider(); + + var runtime = container.GetRequiredService(); + + runtime.Start(); Assert.IsTrue(MyComponent.IsInit); Assert.IsFalse(MyComponent.IsTerminated); - coreRuntime.Terminate(); + runtime.Terminate(); Assert.IsTrue(MyComponent.IsTerminated); } diff --git a/src/Umbraco.Tests.Integration/TestServerTest/UmbracoBuilderExtensions.cs b/src/Umbraco.Tests.Integration/TestServerTest/UmbracoBuilderExtensions.cs index 23b4b17be8..171914ecd6 100644 --- a/src/Umbraco.Tests.Integration/TestServerTest/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Tests.Integration/TestServerTest/UmbracoBuilderExtensions.cs @@ -16,7 +16,7 @@ namespace Umbraco.Tests.Integration.TestServerTest /// /// public static IUmbracoBuilder WithTestCore(this IUmbracoBuilder builder, TestHelper testHelper, - Action dbInstallEventHandler) + Action dbInstallEventHandler) { return builder.AddWith(nameof(global::Umbraco.Web.Common.Builder.UmbracoBuilderExtensions.WithCore), () => diff --git a/src/Umbraco.Tests.Integration/TestServerTest/UmbracoTestServerTestBase.cs b/src/Umbraco.Tests.Integration/TestServerTest/UmbracoTestServerTestBase.cs index a7ea7e0315..0595e3477b 100644 --- a/src/Umbraco.Tests.Integration/TestServerTest/UmbracoTestServerTestBase.cs +++ b/src/Umbraco.Tests.Integration/TestServerTest/UmbracoTestServerTestBase.cs @@ -13,7 +13,6 @@ using Microsoft.AspNetCore.TestHost; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using NUnit.Framework; -using Umbraco.Composing; using Umbraco.Core; using Umbraco.Extensions; using Umbraco.Tests.Integration.Testing; @@ -118,13 +117,9 @@ namespace Umbraco.Tests.Integration.TestServerTest public override void TearDown() { base.TearDown(); + base.TerminateCoreRuntime(); Factory.Dispose(); - - if (Current.IsInitialized) - { - Current.IsInitialized = false; - } } #region IStartup diff --git a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs index 437a282ecf..ecdaac53b2 100644 --- a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs +++ b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs @@ -71,7 +71,10 @@ namespace Umbraco.Tests.Integration.Testing [TearDown] public virtual void TearDown() { - foreach (var a in _testTeardown) a(); + if (_testTeardown != null) + { + foreach (var a in _testTeardown) a(); + } _testTeardown = null; FirstTestInFixture = false; FirstTestInSession = false; @@ -88,6 +91,7 @@ namespace Umbraco.Tests.Integration.Testing { TestContext.Progress.Write($"Start test {TestCount++}: {TestContext.CurrentContext.Test.Name}"); } + [SetUp] public virtual void Setup() { @@ -157,7 +161,7 @@ namespace Umbraco.Tests.Integration.Testing } /// - /// Creates a instance for testing and registers an event handler for database install + /// Creates a instance for testing and registers an event handler for database install /// /// /// @@ -172,7 +176,7 @@ namespace Umbraco.Tests.Integration.Testing /// /// /// - public CoreRuntime CreateTestRuntime( + public CoreRuntimeBootstrapper CreateTestRuntime( GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, @@ -199,7 +203,7 @@ namespace Umbraco.Tests.Integration.Testing } /// - /// Creates a instance for testing and registers an event handler for database install + /// Creates a instance for testing and registers an event handler for database install /// /// /// @@ -216,15 +220,15 @@ namespace Umbraco.Tests.Integration.Testing /// The event handler used for DB installation /// /// - public static CoreRuntime CreateTestRuntime( + public static CoreRuntimeBootstrapper CreateTestRuntime( GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILoggerFactory loggerFactory, IProfiler profiler, Core.Hosting.IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo, ITypeFinder typeFinder, AppCaches appCaches, IDbProviderFactoryCreator dbProviderFactoryCreator, - IMainDom mainDom, Action eventHandler) + IMainDom mainDom, Action eventHandler) { - var runtime = new CoreRuntime( + var runtime = new CoreRuntimeBootstrapper( globalSettings, connectionStrings, umbracoVersion, @@ -292,9 +296,21 @@ namespace Umbraco.Tests.Integration.Testing Services.GetRequiredService().EnsureBackofficeSecurity(); Services.GetRequiredService().EnsureUmbracoContext(); app.UseUmbracoCore(); // Takes 200 ms + + OnTestTearDown(TerminateCoreRuntime); } } + /// + /// Some IComponents hook onto static events (e.g. Published in ContentService) + /// If these fire after the components host has been shutdown, errors can occur. + /// If CoreRuntime.Start() is called We also need to de-register the events. + /// + protected void TerminateCoreRuntime() + { + Services.GetRequiredService().Terminate(); + } + #endregion #region LocalDb @@ -303,19 +319,23 @@ namespace Umbraco.Tests.Integration.Testing private static LocalDbTestDatabase _dbInstance; /// - /// Event handler for the to install the database and register the to Terminate + /// Event handler for the to install the database /// - /// + /// /// - protected void UseTestLocalDb(CoreRuntime runtime, RuntimeEssentialsEventArgs args) + protected void UseTestLocalDb(CoreRuntimeBootstrapper runtimeBootstrapper, RuntimeEssentialsEventArgs args) { - // MUST be terminated on teardown - OnTestTearDown(() => runtime.Terminate()); - // This will create a db, install the schema and ensure the app is configured to run - InstallTestLocalDb(args.DatabaseFactory, runtime.RuntimeLoggerFactory, runtime.State, TestHelper.WorkingDirectory, out var connectionString); - TestDBConnectionString = connectionString; + InstallTestLocalDb(args.DatabaseFactory, runtimeBootstrapper.RuntimeLoggerFactory, runtimeBootstrapper.State, TestHelper.WorkingDirectory); + TestDBConnectionString = args.DatabaseFactory.ConnectionString; InMemoryConfiguration["ConnectionStrings:" + Constants.System.UmbracoConnectionName] = TestDBConnectionString; + + // Re-configure IOptions now that we have a test db + // This is what will be resolved first time IUmbracoDatabaseFactory is resolved from container (e.g. post CoreRuntime bootstrap) + args.Composition.Services.Configure((x) => + { + x.UmbracoConnectionString = new ConfigConnectionString(Constants.System.UmbracoConnectionName, TestDBConnectionString); + }); } /// @@ -356,9 +376,8 @@ namespace Umbraco.Tests.Integration.Testing /// private void InstallTestLocalDb( IUmbracoDatabaseFactory databaseFactory, ILoggerFactory loggerFactory, - IRuntimeState runtimeState, string workingDirectory, out string connectionString) + IRuntimeState runtimeState, string workingDirectory) { - connectionString = null; var dbFilePath = Path.Combine(workingDirectory, "LocalDb"); // get the currently set db options @@ -461,7 +480,6 @@ namespace Umbraco.Tests.Integration.Testing default: throw new ArgumentOutOfRangeException(nameof(testOptions), testOptions, null); } - connectionString = db.ConnectionString; } #endregion diff --git a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentEventsTests.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentEventsTests.cs index ce98e4f5a8..d5f9f41cbb 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentEventsTests.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentEventsTests.cs @@ -7,7 +7,6 @@ using Umbraco.Core.Cache; using Microsoft.Extensions.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories.Implement; -using Umbraco.Core.Services; using Umbraco.Core.Sync; using Umbraco.Tests.Common.Builders; using Umbraco.Tests.Integration.Testing; @@ -24,8 +23,6 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services private CacheRefresherCollection CacheRefresherCollection => GetRequiredService(); private IUmbracoContextFactory UmbracoContextFactory => GetRequiredService(); private ILogger Logger => GetRequiredService>(); - private IContentService ContentService => GetRequiredService(); - private IFileService FileService => GetRequiredService(); #region Setup diff --git a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServicePerformanceTest.cs b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServicePerformanceTest.cs index b7839d485c..072fbe04a3 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServicePerformanceTest.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServicePerformanceTest.cs @@ -5,7 +5,7 @@ using System.Linq; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using NUnit.Framework; -using Umbraco.Composing; +using Umbraco.Core; using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; @@ -109,7 +109,7 @@ namespace Umbraco.Tests.Integration.Umbraco.Infrastructure.Services total.AddRange(ContentService.GetPagedDescendants(content.Id, 0, int.MaxValue, out var _)); } TestProfiler.Disable(); - Current.Logger.LogInformation("Returned {Total} items", total.Count); + StaticApplicationLogging.Logger.LogInformation("Returned {Total} items", total.Count); } } diff --git a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs index 19fccab900..de20211774 100644 --- a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs +++ b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs @@ -53,9 +53,9 @@ namespace Umbraco.Tests.Routing HostingEnvironment); } - public class TestRuntime : CoreRuntime + public class TestRuntimeBootstrapper : CoreRuntimeBootstrapper { - public TestRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) + public TestRuntimeBootstrapper(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) : base(globalSettings, connectionStrings,umbracoVersion, ioHelper, NullLoggerFactory.Instance, Mock.Of(), new AspNetUmbracoBootPermissionChecker(), hostingEnvironment, backOfficeInfo, TestHelper.DbProviderFactoryCreator, TestHelper.MainDom, TestHelper.GetTypeFinder(), AppCaches.NoCache) { } diff --git a/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs b/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs index 60e395344d..70beb3643a 100644 --- a/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs +++ b/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs @@ -60,18 +60,18 @@ namespace Umbraco.Tests.Runtimes private static readonly IProfiler _profiler = new TestProfiler(); private static readonly GlobalSettings _globalSettings = new GlobalSettings(); - public IRuntime Runtime { get; private set; } - protected override IRuntime GetRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) + + protected override CoreRuntimeBootstrapper GetRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) { - return Runtime = new TestRuntime(globalSettings, connectionStrings, umbracoVersion, ioHelper, logger, loggerFactory, profiler, hostingEnvironment, backOfficeInfo); + return new TestRuntimeBootstrapper(globalSettings, connectionStrings, umbracoVersion, ioHelper, logger, loggerFactory, profiler, hostingEnvironment, backOfficeInfo); } } // test runtime - public class TestRuntime : CoreRuntime + public class TestRuntimeBootstrapper : CoreRuntimeBootstrapper { - public TestRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) + public TestRuntimeBootstrapper(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) :base(globalSettings, connectionStrings,umbracoVersion, ioHelper, loggerFactory, profiler, new AspNetUmbracoBootPermissionChecker(), hostingEnvironment, backOfficeInfo, TestHelper.DbProviderFactoryCreator, TestHelper.MainDom, TestHelper.GetTypeFinder(), AppCaches.NoCache) { @@ -79,7 +79,7 @@ namespace Umbraco.Tests.Runtimes // must override the database factory // else BootFailedException because U cannot connect to the configured db - protected internal override IUmbracoDatabaseFactory CreateDatabaseFactory() + protected internal override IUmbracoDatabaseFactory CreateBootstrapDatabaseFactory() { var mock = new Mock(); mock.Setup(x => x.Configured).Returns(true); diff --git a/src/Umbraco.Tests/Web/Mvc/ValidateUmbracoFormRouteStringAttributeTests.cs b/src/Umbraco.Tests/Web/Mvc/ValidateUmbracoFormRouteStringAttributeTests.cs index 9d9c965440..d4c3b7c887 100644 --- a/src/Umbraco.Tests/Web/Mvc/ValidateUmbracoFormRouteStringAttributeTests.cs +++ b/src/Umbraco.Tests/Web/Mvc/ValidateUmbracoFormRouteStringAttributeTests.cs @@ -1,5 +1,4 @@ using NUnit.Framework; -using Umbraco.Composing; using Umbraco.Web; using Umbraco.Web.Mvc; diff --git a/src/Umbraco.Web.BackOffice/Controllers/ContentControllerBase.cs b/src/Umbraco.Web.BackOffice/Controllers/ContentControllerBase.cs index d2b751837c..a3c1cfb89a 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/ContentControllerBase.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/ContentControllerBase.cs @@ -4,7 +4,6 @@ using System.Net; using System.Net.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; -using Umbraco.Composing; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Configuration; diff --git a/src/Umbraco.Web.BackOffice/Controllers/UpdateCheckController.cs b/src/Umbraco.Web.BackOffice/Controllers/UpdateCheckController.cs index 71dc97c835..6bed6a2b2c 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/UpdateCheckController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/UpdateCheckController.cs @@ -5,7 +5,6 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.Extensions.Options; using Semver; -using Umbraco.Composing; using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; diff --git a/src/Umbraco.Web.BackOffice/Extensions/BackOfficeApplicationBuilderExtensions.cs b/src/Umbraco.Web.BackOffice/Extensions/BackOfficeApplicationBuilderExtensions.cs index 8b38211794..3c6b538506 100644 --- a/src/Umbraco.Web.BackOffice/Extensions/BackOfficeApplicationBuilderExtensions.cs +++ b/src/Umbraco.Web.BackOffice/Extensions/BackOfficeApplicationBuilderExtensions.cs @@ -1,13 +1,7 @@ using System; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; using SixLabors.ImageSharp.Web.DependencyInjection; -using Umbraco.Composing; -using Umbraco.Core; -using Umbraco.Core.Configuration.Models; -using Umbraco.Core.IO; using Umbraco.Web.BackOffice.Routing; using Umbraco.Web.BackOffice.Security; @@ -29,18 +23,6 @@ namespace Umbraco.Extensions app.UseUmbracoPreview(); app.UseUmbracoInstaller(); - - // TODO: remove current class, it's on its last legs. - Current.Initialize( - app.ApplicationServices.GetService>(), - app.ApplicationServices.GetService>().Value, - app.ApplicationServices.GetService>().Value, - app.ApplicationServices.GetService(), - app.ApplicationServices.GetService(), - app.ApplicationServices.GetService(), - app.ApplicationServices.GetService() - ); - return app; } diff --git a/src/Umbraco.Web.BackOffice/Trees/PartialViewMacrosTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/PartialViewMacrosTreeController.cs index f651c86cae..5baeac7d17 100644 --- a/src/Umbraco.Web.BackOffice/Trees/PartialViewMacrosTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/PartialViewMacrosTreeController.cs @@ -1,5 +1,4 @@ -using Umbraco.Composing; -using Umbraco.Core.IO; +using Umbraco.Core.IO; using Umbraco.Core.Services; using Umbraco.Web.BackOffice.Filters; using Umbraco.Web.Common.Attributes; diff --git a/src/Umbraco.Web.BackOffice/Trees/PartialViewsTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/PartialViewsTreeController.cs index 258f77fe17..dcb98ac5b4 100644 --- a/src/Umbraco.Web.BackOffice/Trees/PartialViewsTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/PartialViewsTreeController.cs @@ -1,5 +1,4 @@ -using Umbraco.Composing; -using Umbraco.Core.IO; +using Umbraco.Core.IO; using Umbraco.Core.Services; using Umbraco.Web.BackOffice.Filters; using Umbraco.Web.Common.Attributes; diff --git a/src/Umbraco.Web.Common/Controllers/UmbracoController.cs b/src/Umbraco.Web.Common/Controllers/UmbracoController.cs index 1498b2c75c..50ec620741 100644 --- a/src/Umbraco.Web.Common/Controllers/UmbracoController.cs +++ b/src/Umbraco.Web.Common/Controllers/UmbracoController.cs @@ -2,7 +2,6 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; -using Umbraco.Composing; using Umbraco.Core.Cache; using Umbraco.Core.Logging; using Umbraco.Core.Configuration.Models; diff --git a/src/Umbraco.Web.Common/Extensions/ApplicationBuilderExtensions.cs b/src/Umbraco.Web.Common/Extensions/ApplicationBuilderExtensions.cs index 9688e5794a..36d4ddbd42 100644 --- a/src/Umbraco.Web.Common/Extensions/ApplicationBuilderExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/ApplicationBuilderExtensions.cs @@ -2,6 +2,7 @@ using System; using System.Net; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using Serilog.Context; using Smidge; using Smidge.Nuglify; @@ -51,9 +52,11 @@ namespace Umbraco.Extensions // Register our global threadabort enricher for logging var threadAbortEnricher = app.ApplicationServices.GetRequiredService(); LogContext.Push(threadAbortEnricher); // NOTE: We are not in a using clause because we are not removing it, it is on the global context - + + StaticApplicationLogging.Initialize(app.ApplicationServices.GetRequiredService()); + // Start the runtime! - runtime.Start(app.ApplicationServices); + runtime.Start(); return app; } diff --git a/src/Umbraco.Web.Common/Extensions/ImageCropperTemplateExtensions.cs b/src/Umbraco.Web.Common/Extensions/ImageCropperTemplateExtensions.cs index 77c07e85b2..3af01da3de 100644 --- a/src/Umbraco.Web.Common/Extensions/ImageCropperTemplateExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/ImageCropperTemplateExtensions.cs @@ -1,7 +1,6 @@ using System; using System.Globalization; using Newtonsoft.Json; -using Umbraco.Composing; using Umbraco.Core; using Umbraco.Core.PropertyEditors.ValueConverters; using Microsoft.Extensions.Logging; @@ -28,7 +27,7 @@ namespace Umbraco.Extensions } catch (Exception ex) { - Current.Logger.LogError(ex, "Could not parse the json string: {Json}", json); + StaticApplicationLogging.Logger.LogError(ex, "Could not parse the json string: {Json}", json); } } diff --git a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs index 80be943eb7..48ef00e1c8 100644 --- a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs @@ -142,7 +142,7 @@ namespace Umbraco.Extensions /// /// /// - /// Delegate to create an + /// Delegate to create an /// /// public static IServiceCollection AddUmbracoCore( @@ -153,7 +153,7 @@ namespace Umbraco.Extensions ILoggingConfiguration loggingConfiguration, IConfiguration configuration, //TODO: Yep that's extremely ugly - Func getRuntime) + Func getRuntimeBootstrapper) { if (services is null) throw new ArgumentNullException(nameof(services)); if (entryAssembly is null) throw new ArgumentNullException(nameof(entryAssembly)); @@ -208,7 +208,7 @@ namespace Umbraco.Extensions var umbracoVersion = new UmbracoVersion(); var typeFinder = CreateTypeFinder(loggerFactory, profiler, webHostEnvironment, entryAssembly, typeFinderSettings); - var coreRuntime = getRuntime( + var bootstrapper = getRuntimeBootstrapper( globalSettings.CurrentValue, connectionStrings.Value, umbracoVersion, @@ -221,7 +221,7 @@ namespace Umbraco.Extensions appCaches, dbProviderFactoryCreator); - coreRuntime.Configure(services); + bootstrapper.Configure(services); return services; } @@ -320,7 +320,7 @@ namespace Umbraco.Extensions return new TypeFinder(loggerFactory.CreateLogger(), new DefaultUmbracoAssemblyProvider(entryAssembly), runtimeHash, new TypeFinderConfig(typeFinderSettings)); } - private static IRuntime GetCoreRuntime( + private static CoreRuntimeBootstrapper GetCoreRuntime( GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILoggerFactory loggerFactory, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo, ITypeFinder typeFinder, AppCaches appCaches, IDbProviderFactoryCreator dbProviderFactoryCreator) @@ -335,7 +335,7 @@ namespace Umbraco.Extensions var mainDom = new MainDom(loggerFactory.CreateLogger(), mainDomLock); - var coreRuntime = new CoreRuntime( + var coreRuntime = new CoreRuntimeBootstrapper( globalSettings, connectionStrings, umbracoVersion, diff --git a/src/Umbraco.Web.Common/UmbracoContext/UmbracoContext.cs b/src/Umbraco.Web.Common/UmbracoContext/UmbracoContext.cs index 5e5b6f6910..ab7423c5be 100644 --- a/src/Umbraco.Web.Common/UmbracoContext/UmbracoContext.cs +++ b/src/Umbraco.Web.Common/UmbracoContext/UmbracoContext.cs @@ -1,6 +1,5 @@ using System; using Microsoft.Extensions.Options; -using Umbraco.Composing; using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; diff --git a/src/Umbraco.Web.UI.NetCore/umbraco/UmbracoInstall/Index.cshtml b/src/Umbraco.Web.UI.NetCore/umbraco/UmbracoInstall/Index.cshtml index 21a42dcb63..79cbe8305a 100644 --- a/src/Umbraco.Web.UI.NetCore/umbraco/UmbracoInstall/Index.cshtml +++ b/src/Umbraco.Web.UI.NetCore/umbraco/UmbracoInstall/Index.cshtml @@ -1,5 +1,4 @@ @using Umbraco.Extensions -@using Umbraco.Composing @{ Layout = null; } diff --git a/src/Umbraco.Web/Composing/Current.cs b/src/Umbraco.Web/Composing/Current.cs index d49aca86d5..1d50154214 100644 --- a/src/Umbraco.Web/Composing/Current.cs +++ b/src/Umbraco.Web/Composing/Current.cs @@ -39,7 +39,6 @@ using Umbraco.Web.WebApi; namespace Umbraco.Web.Composing { - // TODO: MSDI - let's kill this class once and for all... // see notes in Umbraco.Core.Composing.Current. public static class Current { diff --git a/src/Umbraco.Web/Logging/OwinLoggerFactory.cs b/src/Umbraco.Web/Logging/OwinLoggerFactory.cs index 278fa3f0b4..d8b76145c6 100644 --- a/src/Umbraco.Web/Logging/OwinLoggerFactory.cs +++ b/src/Umbraco.Web/Logging/OwinLoggerFactory.cs @@ -1,6 +1,6 @@ using System; using Microsoft.Owin.Logging; -using Umbraco.Composing; +using Umbraco.Core; namespace Umbraco.Web.Logging { @@ -13,7 +13,7 @@ namespace Umbraco.Web.Logging /// public Microsoft.Owin.Logging.ILogger Create(string name) { - return new OwinLogger(Current.Logger, new Lazy(() => Type.GetType(name) ?? typeof (OwinLogger))); + return new OwinLogger(StaticApplicationLogging.Logger, new Lazy(() => Type.GetType(name) ?? typeof (OwinLogger))); } } } diff --git a/src/Umbraco.Web/UmbracoApplication.cs b/src/Umbraco.Web/UmbracoApplication.cs index 90b2569c67..3218710902 100644 --- a/src/Umbraco.Web/UmbracoApplication.cs +++ b/src/Umbraco.Web/UmbracoApplication.cs @@ -19,7 +19,7 @@ namespace Umbraco.Web /// public class UmbracoApplication : UmbracoApplicationBase { - protected override IRuntime GetRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) + protected override CoreRuntimeBootstrapper GetRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) { var dbProviderFactoryCreator = new UmbracoDbProviderFactoryCreator(); @@ -44,7 +44,7 @@ namespace Umbraco.Web new IsolatedCaches(type => new DeepCloneAppCache(new ObjectCacheAppCache()))); var umbracoBootPermissionChecker = new AspNetUmbracoBootPermissionChecker(); - return new CoreRuntime(globalSettings, connectionStrings,umbracoVersion, ioHelper, loggerFactory, profiler, umbracoBootPermissionChecker, hostingEnvironment, backOfficeInfo, dbProviderFactoryCreator, mainDom, + return new CoreRuntimeBootstrapper(globalSettings, connectionStrings,umbracoVersion, ioHelper, loggerFactory, profiler, umbracoBootPermissionChecker, hostingEnvironment, backOfficeInfo, dbProviderFactoryCreator, mainDom, GetTypeFinder(hostingEnvironment, logger, profiler), appCaches); } diff --git a/src/Umbraco.Web/UmbracoApplicationBase.cs b/src/Umbraco.Web/UmbracoApplicationBase.cs index 83f056c77d..fe10cfba81 100644 --- a/src/Umbraco.Web/UmbracoApplicationBase.cs +++ b/src/Umbraco.Web/UmbracoApplicationBase.cs @@ -22,6 +22,7 @@ using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Logging.Serilog; using Umbraco.Core.Logging.Serilog.Enrichers; +using Umbraco.Core.Runtime; using Umbraco.Net; using Umbraco.Web.Hosting; using Umbraco.Web.Logging; @@ -48,8 +49,7 @@ namespace Umbraco.Web protected UmbracoApplicationBase() { - if (!Umbraco.Composing.Current.IsInitialized) - { + HostingSettings hostingSettings = null; GlobalSettings globalSettings = null; SecuritySettings securitySettings = null; @@ -63,12 +63,8 @@ namespace Umbraco.Web var backOfficeInfo = new AspNetBackOfficeInfo(globalSettings, ioHelper, _loggerFactory.CreateLogger(), Options.Create(webRoutingSettings)); var profiler = GetWebProfiler(hostingEnvironment); - Umbraco.Composing.Current.Initialize(NullLogger.Instance, - securitySettings, - globalSettings, - ioHelper, hostingEnvironment, backOfficeInfo, profiler); + StaticApplicationLogging.Initialize(_loggerFactory); Logger = NullLogger.Instance; - } } private IProfiler GetWebProfiler(IHostingEnvironment hostingEnvironment) @@ -93,11 +89,8 @@ namespace Umbraco.Web _ioHelper = ioHelper; _loggerFactory = loggerFactory; - if (!Umbraco.Composing.Current.IsInitialized) - { - Logger = logger; - Umbraco.Composing.Current.Initialize(logger, securitySettings, globalSettings, ioHelper, hostingEnvironment, backOfficeInfo, profiler); - } + Logger = logger; + StaticApplicationLogging.Initialize(_loggerFactory); } protected ILogger Logger { get; } @@ -139,7 +132,7 @@ namespace Umbraco.Web /// /// Gets a runtime. /// - protected abstract IRuntime GetRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo); + protected abstract CoreRuntimeBootstrapper GetRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo); /// /// Gets the application register. @@ -184,24 +177,27 @@ namespace Umbraco.Web // create the register for the application, and boot // the boot manager is responsible for registrations var register = GetRegister(globalSettings); - _runtime = GetRuntime( + var boostrapper = GetRuntime( _globalSettings, _connectionStrings, umbracoVersion, _ioHelper, _logger, _loggerFactory, - Umbraco.Composing.Current.Profiler, - Umbraco.Composing.Current.HostingEnvironment, - Umbraco.Composing.Current.BackOfficeInfo); + null, // TODO get from somewhere that isn't Current. + null, // TODO get from somewhere that isn't Current. + null // TODO get from somewhere that isn't Current. + ); //_factory = Current.Factory = _runtime.Configure(register); + // now we can add our request based logging enrichers (globally, which is what we were doing in netframework before) LogContext.Push(new HttpSessionIdEnricher(_factory.GetRequiredService())); LogContext.Push(new HttpRequestNumberEnricher(_factory.GetRequiredService())); LogContext.Push(new HttpRequestIdEnricher(_factory.GetRequiredService())); - _runtime.Start(null); + _runtime = _factory.GetRequiredService(); + _runtime.Start(); } // called by ASP.NET (auto event wireup) once per app domain diff --git a/src/Umbraco.Web/UmbracoHelper.cs b/src/Umbraco.Web/UmbracoHelper.cs index d81bb61251..c55e5ccb51 100644 --- a/src/Umbraco.Web/UmbracoHelper.cs +++ b/src/Umbraco.Web/UmbracoHelper.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; using System.Web; using System.Xml.XPath; -using Umbraco.Composing; using Umbraco.Core; using Umbraco.Core.Dictionary; using Umbraco.Core.Models.PublishedContent; @@ -456,7 +455,7 @@ namespace Umbraco.Web } catch (Exception ex) when (ex is FormatException || ex is ArgumentException) { - Current.Logger.LogWarning("A value was detected in the ufprt parameter but Umbraco could not decrypt the string"); + StaticApplicationLogging.Logger.LogWarning("A value was detected in the ufprt parameter but Umbraco could not decrypt the string"); parts = null; return false; } From b4ce2873ccab9a734081a7a21ed312a3225b6f93 Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Tue, 10 Nov 2020 20:02:09 +0100 Subject: [PATCH 54/56] NetCore: Migrated database server registrar and messenger tasks into hosted services (#9353) * Migrated database server registrar and messenger tasks into hosted services. Moved DatabaseServerRegistrar Options into injectable configuration. * Added further cases for unit tests on hosted services checking execution based on runtime level. * Migrated DatabaseServerMessengerOptions into configuration. --- .../Models/DatabaseServerMessengerSettings.cs | 27 +++ .../Models/DatabaseServerRegistrarSettings.cs | 17 ++ .../Configuration/Models/GlobalSettings.cs | 4 + .../Sync/DatabaseServerMessengerCallbacks.cs | 20 ++ .../Sync/DatabaseServerMessengerOptions.cs | 51 ----- .../Sync/DatabaseServerRegistrar.cs | 8 +- .../Sync/DatabaseServerRegistrarOptions.cs | 30 --- .../Sync/IBatchedDatabaseServerMessenger.cs | 2 +- .../BatchedDatabaseServerMessenger.cs | 21 +- ...aseServerRegistrarAndMessengerComponent.cs | 197 ++---------------- .../CompositionExtensions.cs | 4 +- .../InstructionProcessTask.cs | 48 +++++ .../ServerRegistration/TouchServerTask.cs | 62 ++++++ .../Runtime/CoreInitialComposer.cs | 9 +- .../Sync/DatabaseServerMessenger.cs | 30 +-- .../HealthCheckNotifierTests.cs | 10 +- .../ScheduledPublishingTests.cs | 10 +- .../InstructionProcessTaskTests.cs | 67 ++++++ .../TouchServerTaskTests.cs | 97 +++++++++ .../AspNetCore/AspNetCoreRequestAccessor.cs | 12 +- .../UmbracoCoreServiceCollectionExtensions.cs | 4 + 21 files changed, 424 insertions(+), 306 deletions(-) create mode 100644 src/Umbraco.Core/Configuration/Models/DatabaseServerMessengerSettings.cs create mode 100644 src/Umbraco.Core/Configuration/Models/DatabaseServerRegistrarSettings.cs create mode 100644 src/Umbraco.Core/Sync/DatabaseServerMessengerCallbacks.cs delete mode 100644 src/Umbraco.Core/Sync/DatabaseServerMessengerOptions.cs delete mode 100644 src/Umbraco.Core/Sync/DatabaseServerRegistrarOptions.cs create mode 100644 src/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTask.cs create mode 100644 src/Umbraco.Infrastructure/HostedServices/ServerRegistration/TouchServerTask.cs create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTaskTests.cs create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/TouchServerTaskTests.cs diff --git a/src/Umbraco.Core/Configuration/Models/DatabaseServerMessengerSettings.cs b/src/Umbraco.Core/Configuration/Models/DatabaseServerMessengerSettings.cs new file mode 100644 index 0000000000..32b957d5d0 --- /dev/null +++ b/src/Umbraco.Core/Configuration/Models/DatabaseServerMessengerSettings.cs @@ -0,0 +1,27 @@ +using System; + +namespace Umbraco.Core.Configuration.Models +{ + public class DatabaseServerMessengerSettings + { + /// + /// The maximum number of instructions that can be processed at startup; otherwise the server cold-boots (rebuilds its caches). + /// + public int MaxProcessingInstructionCount { get; set; } = 1000; + + /// + /// The time to keep instructions in the database; records older than this number will be pruned. + /// + public TimeSpan TimeToRetainInstructions { get; set; } = TimeSpan.FromDays(2); + + /// + /// The time to wait between each sync operations. + /// + public TimeSpan TimeBetweenSyncOperations { get; set; } = TimeSpan.FromSeconds(5); + + /// + /// The time to wait between each prune operations. + /// + public TimeSpan TimeBetweenPruneOperations { get; set; } = TimeSpan.FromMinutes(1); + } +} diff --git a/src/Umbraco.Core/Configuration/Models/DatabaseServerRegistrarSettings.cs b/src/Umbraco.Core/Configuration/Models/DatabaseServerRegistrarSettings.cs new file mode 100644 index 0000000000..1aa670fae6 --- /dev/null +++ b/src/Umbraco.Core/Configuration/Models/DatabaseServerRegistrarSettings.cs @@ -0,0 +1,17 @@ +using System; + +namespace Umbraco.Core.Configuration.Models +{ + public class DatabaseServerRegistrarSettings + { + /// + /// The amount of time to wait between calls to the database on the background thread. + /// + public TimeSpan WaitTimeBetweenCalls { get; set; } = TimeSpan.FromMinutes(1); + + /// + /// The time span to wait before considering a server stale, after it has last been accessed. + /// + public TimeSpan StaleServerTimeout { get; set; } = TimeSpan.FromMinutes(2); + } +} diff --git a/src/Umbraco.Core/Configuration/Models/GlobalSettings.cs b/src/Umbraco.Core/Configuration/Models/GlobalSettings.cs index 37d0f4a8a2..0a566cd7fe 100644 --- a/src/Umbraco.Core/Configuration/Models/GlobalSettings.cs +++ b/src/Umbraco.Core/Configuration/Models/GlobalSettings.cs @@ -46,6 +46,10 @@ public bool DisableElectionForSingleServer { get; set; } = false; + public DatabaseServerRegistrarSettings DatabaseServerRegistrar { get; set; } = new DatabaseServerRegistrarSettings(); + + public DatabaseServerMessengerSettings DatabaseServerMessenger { get; set; } = new DatabaseServerMessengerSettings(); + public string RegisterType { get; set; } = string.Empty; public string DatabaseFactoryServerVersion { get; set; } = string.Empty; diff --git a/src/Umbraco.Core/Sync/DatabaseServerMessengerCallbacks.cs b/src/Umbraco.Core/Sync/DatabaseServerMessengerCallbacks.cs new file mode 100644 index 0000000000..7438762295 --- /dev/null +++ b/src/Umbraco.Core/Sync/DatabaseServerMessengerCallbacks.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; + +namespace Umbraco.Core.Sync +{ + /// + /// Holds a list of callbacks associated with implementations of . + /// + public class DatabaseServerMessengerCallbacks + { + /// + /// A list of callbacks that will be invoked if the lastsynced.txt file does not exist. + /// + /// + /// These callbacks will typically be for e.g. rebuilding the xml cache file, or examine indexes, based on + /// the data in the database to get this particular server node up to date. + /// + public IEnumerable InitializingCallbacks { get; set; } + } +} diff --git a/src/Umbraco.Core/Sync/DatabaseServerMessengerOptions.cs b/src/Umbraco.Core/Sync/DatabaseServerMessengerOptions.cs deleted file mode 100644 index 6bfd6bff4a..0000000000 --- a/src/Umbraco.Core/Sync/DatabaseServerMessengerOptions.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Umbraco.Core.Sync -{ - /// - /// Provides options to the . - /// - public class DatabaseServerMessengerOptions - { - /// - /// Initializes a new instance of the with default values. - /// - public DatabaseServerMessengerOptions() - { - DaysToRetainInstructions = 2; // 2 days - ThrottleSeconds = 5; // 5 second - MaxProcessingInstructionCount = 1000; - PruneThrottleSeconds = 60; // 1 minute - } - - /// - /// The maximum number of instructions that can be processed at startup; otherwise the server cold-boots (rebuilds its caches). - /// - public int MaxProcessingInstructionCount { get; set; } - - /// - /// A list of callbacks that will be invoked if the lastsynced.txt file does not exist. - /// - /// - /// These callbacks will typically be for eg rebuilding the xml cache file, or examine indexes, based on - /// the data in the database to get this particular server node up to date. - /// - public IEnumerable InitializingCallbacks { get; set; } - - /// - /// The number of days to keep instructions in the database; records older than this number will be pruned. - /// - public int DaysToRetainInstructions { get; set; } - - /// - /// The number of seconds to wait between each sync operations. - /// - public int ThrottleSeconds { get; set; } - - /// - /// The number of seconds to wait between each prune operations. - /// - public int PruneThrottleSeconds { get; set; } - } -} diff --git a/src/Umbraco.Core/Sync/DatabaseServerRegistrar.cs b/src/Umbraco.Core/Sync/DatabaseServerRegistrar.cs index 390e89843e..f361eb7a67 100644 --- a/src/Umbraco.Core/Sync/DatabaseServerRegistrar.cs +++ b/src/Umbraco.Core/Sync/DatabaseServerRegistrar.cs @@ -15,19 +15,13 @@ namespace Umbraco.Core.Sync { private readonly Lazy _registrationService; - /// - /// Gets or sets the registrar options. - /// - public DatabaseServerRegistrarOptions Options { get; } - /// /// Initializes a new instance of the class. /// /// The registration service. /// Some options. - public DatabaseServerRegistrar(Lazy registrationService, DatabaseServerRegistrarOptions options) + public DatabaseServerRegistrar(Lazy registrationService) { - Options = options ?? throw new ArgumentNullException(nameof(options)); _registrationService = registrationService ?? throw new ArgumentNullException(nameof(registrationService)); } diff --git a/src/Umbraco.Core/Sync/DatabaseServerRegistrarOptions.cs b/src/Umbraco.Core/Sync/DatabaseServerRegistrarOptions.cs deleted file mode 100644 index 58b66ca8e6..0000000000 --- a/src/Umbraco.Core/Sync/DatabaseServerRegistrarOptions.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.ComponentModel; - -namespace Umbraco.Core.Sync -{ - /// - /// Provides options to the . - /// - public sealed class DatabaseServerRegistrarOptions - { - /// - /// Initializes a new instance of the class with default values. - /// - public DatabaseServerRegistrarOptions() - { - StaleServerTimeout = TimeSpan.FromMinutes(2); // 2 minutes - RecurringSeconds = 60; // do it every minute - } - - /// - /// The amount of seconds to wait between calls to the database on the background thread - /// - public int RecurringSeconds { get; set; } - - /// - /// The time span to wait before considering a server stale, after it has last been accessed. - /// - public TimeSpan StaleServerTimeout { get; set; } - } -} diff --git a/src/Umbraco.Core/Sync/IBatchedDatabaseServerMessenger.cs b/src/Umbraco.Core/Sync/IBatchedDatabaseServerMessenger.cs index d8ec82818d..560b7fb235 100644 --- a/src/Umbraco.Core/Sync/IBatchedDatabaseServerMessenger.cs +++ b/src/Umbraco.Core/Sync/IBatchedDatabaseServerMessenger.cs @@ -6,7 +6,7 @@ namespace Umbraco.Core.Sync public interface IBatchedDatabaseServerMessenger : IDatabaseServerMessenger { void FlushBatch(); - DatabaseServerMessengerOptions Options { get; } + DatabaseServerMessengerCallbacks Callbacks { get; } void Startup(); } } diff --git a/src/Umbraco.Infrastructure/BatchedDatabaseServerMessenger.cs b/src/Umbraco.Infrastructure/BatchedDatabaseServerMessenger.cs index e022219d15..187eced6e4 100644 --- a/src/Umbraco.Infrastructure/BatchedDatabaseServerMessenger.cs +++ b/src/Umbraco.Infrastructure/BatchedDatabaseServerMessenger.cs @@ -1,17 +1,19 @@ using System; using System.Collections.Generic; using System.Linq; -using Newtonsoft.Json; using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Newtonsoft.Json; using Umbraco.Core; using Umbraco.Core.Cache; -using Umbraco.Core.Sync; -using Umbraco.Web.Routing; +using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Hosting; using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.Scoping; -using Umbraco.Core.Hosting; +using Umbraco.Core.Sync; +using Umbraco.Web.Routing; namespace Umbraco.Web { @@ -34,12 +36,13 @@ namespace Umbraco.Web IProfilingLogger proflog, ILogger logger, IServerRegistrar serverRegistrar, - DatabaseServerMessengerOptions options, + DatabaseServerMessengerCallbacks callbacks, IHostingEnvironment hostingEnvironment, CacheRefresherCollection cacheRefreshers, IRequestCache requestCache, - IRequestAccessor requestAccessor) - : base(mainDom, scopeProvider, databaseFactory, proflog, logger, serverRegistrar, true, options, hostingEnvironment, cacheRefreshers) + IRequestAccessor requestAccessor, + IOptions globalSettings) + : base(mainDom, scopeProvider, databaseFactory, proflog, logger, serverRegistrar, true, callbacks, hostingEnvironment, cacheRefreshers, globalSettings) { _databaseFactory = databaseFactory; _requestCache = requestCache; @@ -89,7 +92,7 @@ namespace Umbraco.Web //Write the instructions but only create JSON blobs with a max instruction count equal to MaxProcessingInstructionCount using (var scope = ScopeProvider.CreateScope()) { - foreach (var instructionsBatch in instructions.InGroupsOf(Options.MaxProcessingInstructionCount)) + foreach (var instructionsBatch in instructions.InGroupsOf(GlobalSettings.DatabaseServerMessenger.MaxProcessingInstructionCount)) { WriteInstructions(scope, instructionsBatch); } @@ -143,7 +146,7 @@ namespace Umbraco.Web //only write the json blob with a maximum count of the MaxProcessingInstructionCount using (var scope = ScopeProvider.CreateScope()) { - foreach (var maxBatch in instructions.InGroupsOf(Options.MaxProcessingInstructionCount)) + foreach (var maxBatch in instructions.InGroupsOf(GlobalSettings.DatabaseServerMessenger.MaxProcessingInstructionCount)) { WriteInstructions(scope, maxBatch); } diff --git a/src/Umbraco.Infrastructure/Compose/DatabaseServerRegistrarAndMessengerComponent.cs b/src/Umbraco.Infrastructure/Compose/DatabaseServerRegistrarAndMessengerComponent.cs index 9cd2b187d5..3309c347db 100644 --- a/src/Umbraco.Infrastructure/Compose/DatabaseServerRegistrarAndMessengerComponent.cs +++ b/src/Umbraco.Infrastructure/Compose/DatabaseServerRegistrarAndMessengerComponent.cs @@ -1,18 +1,12 @@ using System; -using System.Threading; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Composing; -using Umbraco.Core.Hosting; -using Umbraco.Core.Services; using Umbraco.Core.Services.Changes; using Umbraco.Core.Sync; -using Umbraco.Examine; using Umbraco.Web.Cache; using Umbraco.Web.PublishedCache; using Umbraco.Web.Routing; -using Umbraco.Web.Scheduling; using Umbraco.Web.Search; namespace Umbraco.Web.Compose @@ -36,9 +30,9 @@ namespace Umbraco.Web.Compose public sealed class DatabaseServerRegistrarAndMessengerComposer : ComponentComposer, ICoreComposer { - public static DatabaseServerMessengerOptions GetDefaultOptions(IServiceProvider factory) + public static DatabaseServerMessengerCallbacks GetCallbacks(IServiceProvider factory) { - return new DatabaseServerMessengerOptions + return new DatabaseServerMessengerCallbacks { //These callbacks will be executed if the server has not been synced // (i.e. it is a new server or the lastsynced.txt file has been removed) @@ -74,208 +68,55 @@ namespace Umbraco.Web.Compose { base.Compose(composition); - composition.SetDatabaseServerMessengerOptions(GetDefaultOptions); + composition.SetDatabaseServerMessengerCallbacks(GetCallbacks); composition.SetServerMessenger(); } } public sealed class DatabaseServerRegistrarAndMessengerComponent : IComponent { - private object _locker = new object(); - private readonly DatabaseServerRegistrar _registrar; private readonly IBatchedDatabaseServerMessenger _messenger; - private readonly ILogger _logger; - private readonly ILoggerFactory _loggerFactory; - private readonly IServerRegistrationService _registrationService; - private readonly BackgroundTaskRunner _touchTaskRunner; - private readonly BackgroundTaskRunner _processTaskRunner; - private bool _started; - private IBackgroundTask[] _tasks; private readonly IRequestAccessor _requestAccessor; public DatabaseServerRegistrarAndMessengerComponent( - IServerRegistrar serverRegistrar, IServerMessenger serverMessenger, - IServerRegistrationService registrationService, - ILogger logger, - ILoggerFactory loggerFactory, - IApplicationShutdownRegistry hostingEnvironment, IRequestAccessor requestAccessor) { - _logger = logger; - _loggerFactory = loggerFactory; - _registrationService = registrationService; _requestAccessor = requestAccessor; - - // create task runner for DatabaseServerRegistrar - _registrar = serverRegistrar as DatabaseServerRegistrar; - if (_registrar != null) - { - _touchTaskRunner = new BackgroundTaskRunner("ServerRegistration", - new BackgroundTaskRunnerOptions { AutoStart = true }, _loggerFactory.CreateLogger>(), hostingEnvironment); - } - - // create task runner for BatchedDatabaseServerMessenger _messenger = serverMessenger as IBatchedDatabaseServerMessenger; - if (_messenger != null) - { - _processTaskRunner = new BackgroundTaskRunner("ServerInstProcess", - new BackgroundTaskRunnerOptions { AutoStart = true }, _loggerFactory.CreateLogger>(), hostingEnvironment); - } } public void Initialize() { - //We will start the whole process when a successful request is made - if (_registrar != null || _messenger != null) - _requestAccessor.RouteAttempt += RegisterBackgroundTasksOnce; + // The scheduled tasks - TouchServerTask and InstructionProcessTask - run as .NET Core hosted services. + // The former (as well as other hosted services that run outside of an HTTP request context) depends on the application URL + // being available (via IRequestAccessor), which can only be retrieved within an HTTP request (unless it's explicitly configured). + // Hence we hook up a one-off task on an HTTP request to ensure this is retrieved, which caches the value and makes it available + // for the hosted services to use when the HTTP request is not available. + _requestAccessor.RouteAttempt += EnsureApplicationUrlOnce; - // must come last, as it references some _variables + // Must come last, as it references some _variables _messenger?.Startup(); } public void Terminate() { } - /// - /// Handle when a request is made - /// - /// - /// - /// - /// We require this because: - /// - ApplicationContext.UmbracoApplicationUrl is initialized by UmbracoModule in BeginRequest - /// - RegisterServer is called on _requestAccessor.RouteAttempt which is triggered in ProcessRequest - /// we are safe, UmbracoApplicationUrl has been initialized - /// - private void RegisterBackgroundTasksOnce(object sender, RoutableAttemptEventArgs e) + private void EnsureApplicationUrlOnce(object sender, RoutableAttemptEventArgs e) { - switch (e.Outcome) + if (e.Outcome == EnsureRoutableOutcome.IsRoutable || e.Outcome == EnsureRoutableOutcome.NotDocumentRequest) { - case EnsureRoutableOutcome.IsRoutable: - case EnsureRoutableOutcome.NotDocumentRequest: - _requestAccessor.RouteAttempt -= RegisterBackgroundTasksOnce; - RegisterBackgroundTasks(); - break; + _requestAccessor.RouteAttempt -= EnsureApplicationUrlOnce; + EnsureApplicationUrl(); } } - private void RegisterBackgroundTasks() + private void EnsureApplicationUrl() { - // only perform this one time ever - LazyInitializer.EnsureInitialized(ref _tasks, ref _started, ref _locker, () => - { - var serverAddress = _requestAccessor.GetApplicationUrl().ToString(); - - return new[] - { - RegisterInstructionProcess(), - RegisterTouchServer(_registrationService, serverAddress) - }; - }); - } - - private IBackgroundTask RegisterInstructionProcess() - { - if (_messenger == null) - return null; - - var task = new InstructionProcessTask(_processTaskRunner, - 60000, //delay before first execution - _messenger.Options.ThrottleSeconds*1000, //amount of ms between executions - _messenger, - _logger); - _processTaskRunner.TryAdd(task); - return task; - } - - private IBackgroundTask RegisterTouchServer(IServerRegistrationService registrationService, string serverAddress) - { - if (_registrar == null) - return null; - - var task = new TouchServerTask(_touchTaskRunner, - 15000, //delay before first execution - _registrar.Options.RecurringSeconds*1000, //amount of ms between executions - registrationService, _registrar, serverAddress, _logger); - _touchTaskRunner.TryAdd(task); - return task; - } - - private class InstructionProcessTask : RecurringTaskBase - { - private readonly IDatabaseServerMessenger _messenger; - private readonly ILogger _logger; - - public InstructionProcessTask(IBackgroundTaskRunner runner, int delayMilliseconds, int periodMilliseconds, - IDatabaseServerMessenger messenger, ILogger logger) - : base(runner, delayMilliseconds, periodMilliseconds) - { - _messenger = messenger; - _logger = logger; - } - - public override bool IsAsync => false; - - /// - /// Runs the background task. - /// - /// A value indicating whether to repeat the task. - public override bool PerformRun() - { - try - { - _messenger.Sync(); - } - catch (Exception e) - { - _logger.LogError(e, "Failed (will repeat)."); - } - return true; // repeat - } - } - - private class TouchServerTask : RecurringTaskBase - { - private readonly IServerRegistrationService _svc; - private readonly DatabaseServerRegistrar _registrar; - private readonly string _serverAddress; - private readonly ILogger _logger; - - /// - /// Initializes a new instance of the class. - /// - public TouchServerTask(IBackgroundTaskRunner runner, int delayMilliseconds, int periodMilliseconds, - IServerRegistrationService svc, DatabaseServerRegistrar registrar, string serverAddress, ILogger logger) - : base(runner, delayMilliseconds, periodMilliseconds) - { - _svc = svc ?? throw new ArgumentNullException(nameof(svc)); - _registrar = registrar; - _serverAddress = serverAddress; - _logger = logger; - } - - public override bool IsAsync => false; - - /// - /// Runs the background task. - /// - /// A value indicating whether to repeat the task. - public override bool PerformRun() - { - try - { - // TouchServer uses a proper unit of work etc underneath so even in a - // background task it is safe to call it without dealing with any scope - _svc.TouchServer(_serverAddress, _svc.CurrentServerIdentity, _registrar.Options.StaleServerTimeout); - return true; // repeat - } - catch (Exception ex) - { - _logger.LogError(ex, "Failed to update server record in database."); - return false; // probably stop if we have an error - } - } + // By retrieving the application URL within the context of a request (as we are here in responding + // to the IRequestAccessor's RouteAttempt event), we'll get it from the HTTP context and save it for + // future requests that may not be within an HTTP request (e.g. from hosted services). + _requestAccessor.GetApplicationUrl(); } } } diff --git a/src/Umbraco.Infrastructure/CompositionExtensions.cs b/src/Umbraco.Infrastructure/CompositionExtensions.cs index aa351657c5..3a7537d346 100644 --- a/src/Umbraco.Infrastructure/CompositionExtensions.cs +++ b/src/Umbraco.Infrastructure/CompositionExtensions.cs @@ -236,7 +236,7 @@ namespace Umbraco.Core /// The composition. /// A function creating the options. /// Use DatabaseServerRegistrarAndMessengerComposer.GetDefaultOptions to get the options that Umbraco would use by default. - public static void SetDatabaseServerMessengerOptions(this Composition composition, Func factory) + public static void SetDatabaseServerMessengerCallbacks(this Composition composition, Func factory) { composition.Services.AddUnique(factory); } @@ -247,7 +247,7 @@ namespace Umbraco.Core /// The composition. /// Options. /// Use DatabaseServerRegistrarAndMessengerComposer.GetDefaultOptions to get the options that Umbraco would use by default. - public static void SetDatabaseServerMessengerOptions(this Composition composition, DatabaseServerMessengerOptions options) + public static void SetDatabaseServerMessengerOptions(this Composition composition, DatabaseServerMessengerCallbacks options) { composition.Services.AddUnique(_ => options); } diff --git a/src/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTask.cs b/src/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTask.cs new file mode 100644 index 0000000000..8d669178b0 --- /dev/null +++ b/src/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTask.cs @@ -0,0 +1,48 @@ +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Umbraco.Core; +using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Sync; + +namespace Umbraco.Infrastructure.HostedServices.ServerRegistration +{ + /// + /// Implements periodic database instruction processing as a hosted service. + /// + public class InstructionProcessTask : RecurringHostedServiceBase + { + private readonly IRuntimeState _runtimeState; + private readonly IDatabaseServerMessenger _messenger; + private readonly ILogger _logger; + + /// + /// Initializes a new instance of the class. + /// + public InstructionProcessTask(IRuntimeState runtimeState, IServerMessenger messenger, ILogger logger, IOptions globalSettings) + : base(globalSettings.Value.DatabaseServerMessenger.TimeBetweenSyncOperations, TimeSpan.FromMinutes(1)) + { + _runtimeState = runtimeState; + _messenger = messenger as IDatabaseServerMessenger ?? throw new ArgumentNullException(nameof(messenger)); + _logger = logger; + } + + internal override async Task PerformExecuteAsync(object state) + { + if (_runtimeState.Level != RuntimeLevel.Run) + { + return; + } + + try + { + _messenger.Sync(); + } + catch (Exception e) + { + _logger.LogError(e, "Failed (will repeat)."); + } + } + } +} diff --git a/src/Umbraco.Infrastructure/HostedServices/ServerRegistration/TouchServerTask.cs b/src/Umbraco.Infrastructure/HostedServices/ServerRegistration/TouchServerTask.cs new file mode 100644 index 0000000000..0384a071c6 --- /dev/null +++ b/src/Umbraco.Infrastructure/HostedServices/ServerRegistration/TouchServerTask.cs @@ -0,0 +1,62 @@ +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Umbraco.Core; +using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Services; +using Umbraco.Web; + +namespace Umbraco.Infrastructure.HostedServices.ServerRegistration +{ + /// + /// Implements periodic server "touching" (to mark as active/deactive) as a hosted service. + /// + public class TouchServerTask : RecurringHostedServiceBase + { + private readonly IRuntimeState _runtimeState; + private readonly IServerRegistrationService _serverRegistrationService; + private readonly IRequestAccessor _requestAccessor; + private readonly ILogger _logger; + private GlobalSettings _globalSettings; + + /// + /// Initializes a new instance of the class. + /// + public TouchServerTask(IRuntimeState runtimeState, IServerRegistrationService serverRegistrationService, IRequestAccessor requestAccessor, ILogger logger, IOptions globalSettings) + : base(globalSettings.Value.DatabaseServerRegistrar.WaitTimeBetweenCalls, TimeSpan.FromSeconds(15)) + { + _runtimeState = runtimeState; + _serverRegistrationService = serverRegistrationService ?? throw new ArgumentNullException(nameof(serverRegistrationService)); + _requestAccessor = requestAccessor; + _logger = logger; + _globalSettings = globalSettings.Value; + } + + internal override async Task PerformExecuteAsync(object state) + { + if (_runtimeState.Level != RuntimeLevel.Run) + { + return; + } + + var serverAddress = _requestAccessor.GetApplicationUrl()?.ToString(); + if (serverAddress.IsNullOrWhiteSpace()) + { + _logger.LogWarning("No umbracoApplicationUrl for service (yet), skip."); + return; + } + + try + { + // TouchServer uses a proper unit of work etc underneath so even in a + // background task it is safe to call it without dealing with any scope. + _serverRegistrationService.TouchServer(serverAddress, _serverRegistrationService.CurrentServerIdentity, _globalSettings.DatabaseServerRegistrar.StaleServerTimeout); + } + catch (Exception ex) + { + _logger.LogError(ex, "Failed to update server record in database."); + } + } + } +} diff --git a/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs b/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs index 081c1b4d10..2ae6f74465 100644 --- a/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs +++ b/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs @@ -139,8 +139,7 @@ namespace Umbraco.Core.Runtime return singleServer ? (IServerRegistrar) new SingleServerRegistrar(f.GetRequiredService()) : new DatabaseServerRegistrar( - new Lazy(f.GetRequiredService), - new DatabaseServerRegistrarOptions()); + new Lazy(f.GetRequiredService)); }); // by default we'll use the database server messenger with default options (no callbacks), @@ -154,9 +153,11 @@ namespace Umbraco.Core.Runtime factory.GetRequiredService(), factory.GetRequiredService>(), factory.GetRequiredService(), - true, new DatabaseServerMessengerOptions(), + true, + new DatabaseServerMessengerCallbacks(), factory.GetRequiredService(), - factory.GetRequiredService() + factory.GetRequiredService(), + factory.GetRequiredService>() )); composition.CacheRefreshers() diff --git a/src/Umbraco.Infrastructure/Sync/DatabaseServerMessenger.cs b/src/Umbraco.Infrastructure/Sync/DatabaseServerMessenger.cs index 7066e5d806..856772148f 100644 --- a/src/Umbraco.Infrastructure/Sync/DatabaseServerMessenger.cs +++ b/src/Umbraco.Infrastructure/Sync/DatabaseServerMessenger.cs @@ -5,16 +5,17 @@ using System.Globalization; using System.IO; using System.Linq; using System.Threading; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using NPoco; -using Microsoft.Extensions.Logging; using Umbraco.Core.Cache; -using Umbraco.Core.Composing; +using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Hosting; using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Dtos; -using Umbraco.Core.Hosting; using Umbraco.Core.Scoping; namespace Umbraco.Core.Sync @@ -46,11 +47,13 @@ namespace Umbraco.Core.Sync private bool _syncing; private bool _released; - public DatabaseServerMessengerOptions Options { get; } + public DatabaseServerMessengerCallbacks Callbacks { get; } + + public GlobalSettings GlobalSettings { get; } public DatabaseServerMessenger( IMainDom mainDom, IScopeProvider scopeProvider, IUmbracoDatabaseFactory umbracoDatabaseFactory, IProfilingLogger proflog, ILogger logger, IServerRegistrar serverRegistrar, - bool distributedEnabled, DatabaseServerMessengerOptions options, IHostingEnvironment hostingEnvironment, CacheRefresherCollection cacheRefreshers) + bool distributedEnabled, DatabaseServerMessengerCallbacks callbacks, IHostingEnvironment hostingEnvironment, CacheRefresherCollection cacheRefreshers, IOptions globalSettings) : base(distributedEnabled) { ScopeProvider = scopeProvider ?? throw new ArgumentNullException(nameof(scopeProvider)); @@ -61,7 +64,8 @@ namespace Umbraco.Core.Sync _hostingEnvironment = hostingEnvironment; _cacheRefreshers = cacheRefreshers; Logger = logger; - Options = options ?? throw new ArgumentNullException(nameof(options)); + Callbacks = callbacks ?? throw new ArgumentNullException(nameof(callbacks)); + GlobalSettings = globalSettings.Value; _lastPruned = _lastSync = DateTime.UtcNow; _syncIdle = new ManualResetEvent(true); _distCacheFilePath = new Lazy(() => GetDistCacheFilePath(hostingEnvironment)); @@ -200,14 +204,14 @@ namespace Umbraco.Core.Sync //check for how many instructions there are to process, each row contains a count of the number of instructions contained in each //row so we will sum these numbers to get the actual count. var count = database.ExecuteScalar("SELECT SUM(instructionCount) FROM umbracoCacheInstruction WHERE id > @lastId", new {lastId = _lastId}); - if (count > Options.MaxProcessingInstructionCount) + if (count > GlobalSettings.DatabaseServerMessenger.MaxProcessingInstructionCount) { //too many instructions, proceed to cold boot Logger.LogWarning( "The instruction count ({InstructionCount}) exceeds the specified MaxProcessingInstructionCount ({MaxProcessingInstructionCount})." + " The server will skip existing instructions, rebuild its caches and indexes entirely, adjust its last synced Id" + " to the latest found in the database and maintain cache updates based on that Id.", - count, Options.MaxProcessingInstructionCount); + count, GlobalSettings.DatabaseServerMessenger.MaxProcessingInstructionCount); coldboot = true; } @@ -225,8 +229,8 @@ namespace Umbraco.Core.Sync SaveLastSynced(maxId); // execute initializing callbacks - if (Options.InitializingCallbacks != null) - foreach (var callback in Options.InitializingCallbacks) + if (Callbacks.InitializingCallbacks != null) + foreach (var callback in Callbacks.InitializingCallbacks) callback(); } @@ -248,7 +252,7 @@ namespace Umbraco.Core.Sync if (_released) return; - if ((DateTime.UtcNow - _lastSync).TotalSeconds <= Options.ThrottleSeconds) + if ((DateTime.UtcNow - _lastSync) <= GlobalSettings.DatabaseServerMessenger.TimeBetweenSyncOperations) return; //Set our flag and the lock to be in it's original state (i.e. it can be awaited) @@ -265,7 +269,7 @@ namespace Umbraco.Core.Sync ProcessDatabaseInstructions(scope.Database); //Check for pruning throttling - if (_released || (DateTime.UtcNow - _lastPruned).TotalSeconds <= Options.PruneThrottleSeconds) + if (_released || (DateTime.UtcNow - _lastPruned) <= GlobalSettings.DatabaseServerMessenger.TimeBetweenPruneOperations) { scope.Complete(); return; @@ -447,7 +451,7 @@ namespace Umbraco.Core.Sync /// private void PruneOldInstructions(IUmbracoDatabase database) { - var pruneDate = DateTime.UtcNow.AddDays(-Options.DaysToRetainInstructions); + var pruneDate = DateTime.UtcNow - GlobalSettings.DatabaseServerMessenger.TimeToRetainInstructions; // using 2 queries is faster than convoluted joins diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs index 6c1284854e..cdb98f7fa5 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs @@ -37,10 +37,14 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices VerifyNotificationsNotSent(); } - [Test] - public async Task Does_Not_Execute_When_Runtime_State_Is_Not_Run() + [TestCase(RuntimeLevel.Boot)] + [TestCase(RuntimeLevel.Install)] + [TestCase(RuntimeLevel.Unknown)] + [TestCase(RuntimeLevel.Upgrade)] + [TestCase(RuntimeLevel.BootFailed)] + public async Task Does_Not_Execute_When_Runtime_State_Is_Not_Run(RuntimeLevel runtimeLevel) { - var sut = CreateHealthCheckNotifier(runtimeLevel: RuntimeLevel.Boot); + var sut = CreateHealthCheckNotifier(runtimeLevel: runtimeLevel); await sut.PerformExecuteAsync(null); VerifyNotificationsNotSent(); } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ScheduledPublishingTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ScheduledPublishingTests.cs index e0fd2a4acc..c016e52e54 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ScheduledPublishingTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ScheduledPublishingTests.cs @@ -27,10 +27,14 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices VerifyScheduledPublishingNotPerformed(); } - [Test] - public async Task Does_Not_Execute_When_Runtime_State_Is_Not_Run() + [TestCase(RuntimeLevel.Boot)] + [TestCase(RuntimeLevel.Install)] + [TestCase(RuntimeLevel.Unknown)] + [TestCase(RuntimeLevel.Upgrade)] + [TestCase(RuntimeLevel.BootFailed)] + public async Task Does_Not_Execute_When_Runtime_State_Is_Not_Run(RuntimeLevel runtimeLevel) { - var sut = CreateScheduledPublishing(runtimeLevel: RuntimeLevel.Boot); + var sut = CreateScheduledPublishing(runtimeLevel: runtimeLevel); await sut.PerformExecuteAsync(null); VerifyScheduledPublishingNotPerformed(); } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTaskTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTaskTests.cs new file mode 100644 index 0000000000..86644afc77 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTaskTests.cs @@ -0,0 +1,67 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Moq; +using NUnit.Framework; +using Umbraco.Core; +using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Sync; +using Umbraco.Infrastructure.HostedServices.ServerRegistration; + +namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices.ServerRegistration +{ + [TestFixture] + public class InstructionProcessTaskTests + { + private Mock _mockDatabaseServerMessenger; + + [TestCase(RuntimeLevel.Boot)] + [TestCase(RuntimeLevel.Install)] + [TestCase(RuntimeLevel.Unknown)] + [TestCase(RuntimeLevel.Upgrade)] + [TestCase(RuntimeLevel.BootFailed)] + public async Task Does_Not_Execute_When_Runtime_State_Is_Not_Run(RuntimeLevel runtimeLevel) + { + var sut = CreateInstructionProcessTask(runtimeLevel: runtimeLevel); + await sut.PerformExecuteAsync(null); + VerifyMessengerNotSynced(); + } + + [Test] + public async Task Executes_And_Touches_Server() + { + var sut = CreateInstructionProcessTask(); + await sut.PerformExecuteAsync(null); + VerifyMessengerSynced(); + } + + private InstructionProcessTask CreateInstructionProcessTask(RuntimeLevel runtimeLevel = RuntimeLevel.Run) + { + var mockRunTimeState = new Mock(); + mockRunTimeState.SetupGet(x => x.Level).Returns(runtimeLevel); + + var mockLogger = new Mock>(); + + _mockDatabaseServerMessenger = new Mock(); + + var settings = new GlobalSettings(); + + return new InstructionProcessTask(mockRunTimeState.Object, _mockDatabaseServerMessenger.Object, mockLogger.Object, Options.Create(settings)); + } + + private void VerifyMessengerNotSynced() + { + VerifyMessengerSyncedTimes(Times.Never()); + } + + private void VerifyMessengerSynced() + { + VerifyMessengerSyncedTimes(Times.Once()); + } + + private void VerifyMessengerSyncedTimes(Times times) + { + _mockDatabaseServerMessenger.Verify(x => x.Sync(), times); + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/TouchServerTaskTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/TouchServerTaskTests.cs new file mode 100644 index 0000000000..499ff05f04 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/TouchServerTaskTests.cs @@ -0,0 +1,97 @@ +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Moq; +using NUnit.Framework; +using Umbraco.Core; +using Umbraco.Core.Configuration.Models; +using Umbraco.Core.Services; +using Umbraco.Infrastructure.HostedServices.ServerRegistration; +using Umbraco.Web; + +namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices.ServerRegistration +{ + [TestFixture] + public class TouchServerTaskTests + { + private Mock _mockServerRegistrationService; + + private const string _applicationUrl = "https://mysite.com/"; + private const string _serverIdentity = "Test/1"; + private readonly TimeSpan _staleServerTimeout = TimeSpan.FromMinutes(2); + + [TestCase(RuntimeLevel.Boot)] + [TestCase(RuntimeLevel.Install)] + [TestCase(RuntimeLevel.Unknown)] + [TestCase(RuntimeLevel.Upgrade)] + [TestCase(RuntimeLevel.BootFailed)] + public async Task Does_Not_Execute_When_Runtime_State_Is_Not_Run(RuntimeLevel runtimeLevel) + { + var sut = CreateTouchServerTask(runtimeLevel: runtimeLevel); + await sut.PerformExecuteAsync(null); + VerifyServerNotTouched(); + } + + [Test] + public async Task Does_Not_Execute_When_Application_Url_Is_Not_Available() + { + var sut = CreateTouchServerTask(applicationUrl: string.Empty); + await sut.PerformExecuteAsync(null); + VerifyServerNotTouched(); + } + + [Test] + public async Task Executes_And_Touches_Server() + { + var sut = CreateTouchServerTask(); + await sut.PerformExecuteAsync(null); + VerifyServerTouched(); + } + + private TouchServerTask CreateTouchServerTask(RuntimeLevel runtimeLevel = RuntimeLevel.Run, string applicationUrl = _applicationUrl) + { + var mockRequestAccessor = new Mock(); + mockRequestAccessor.Setup(x => x.GetApplicationUrl()).Returns(!string.IsNullOrEmpty(applicationUrl) ? new Uri(_applicationUrl) : null); + + var mockRunTimeState = new Mock(); + mockRunTimeState.SetupGet(x => x.Level).Returns(runtimeLevel); + + var mockLogger = new Mock>(); + + _mockServerRegistrationService = new Mock(); + _mockServerRegistrationService.SetupGet(x => x.CurrentServerIdentity).Returns(_serverIdentity); + + var settings = new GlobalSettings + { + DatabaseServerRegistrar = new DatabaseServerRegistrarSettings + { + StaleServerTimeout = _staleServerTimeout, + } + }; + + return new TouchServerTask(mockRunTimeState.Object, _mockServerRegistrationService.Object, mockRequestAccessor.Object, + mockLogger.Object, Options.Create(settings)); + } + + private void VerifyServerNotTouched() + { + VerifyServerTouchedTimes(Times.Never()); + } + + private void VerifyServerTouched() + { + VerifyServerTouchedTimes(Times.Once()); + } + + private void VerifyServerTouchedTimes(Times times) + { + _mockServerRegistrationService + .Verify(x => x.TouchServer( + It.Is(y => y == _applicationUrl), + It.Is(y => y == _serverIdentity), + It.Is(y => y == _staleServerTimeout)), + times); + } + } +} diff --git a/src/Umbraco.Web.Common/AspNetCore/AspNetCoreRequestAccessor.cs b/src/Umbraco.Web.Common/AspNetCore/AspNetCoreRequestAccessor.cs index 985c568a08..c5104c0fdc 100644 --- a/src/Umbraco.Web.Common/AspNetCore/AspNetCoreRequestAccessor.cs +++ b/src/Umbraco.Web.Common/AspNetCore/AspNetCoreRequestAccessor.cs @@ -4,7 +4,6 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http.Extensions; using Microsoft.Extensions.Options; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Extensions; using Umbraco.Web.Common.Lifetime; using Umbraco.Web.Routing; @@ -43,9 +42,8 @@ namespace Umbraco.Web.Common.AspNetCore RouteAttempt?.Invoke(sender, new RoutableAttemptEventArgs(reason, _umbracoContextAccessor.UmbracoContext)); } - - public string GetRequestValue(string name) => GetFormValue(name) ?? GetQueryStringValue(name); + public string GetFormValue(string name) { var request = _httpContextAccessor.GetRequiredHttpContext().Request; @@ -58,14 +56,15 @@ namespace Umbraco.Web.Common.AspNetCore public event EventHandler EndRequest; public event EventHandler RouteAttempt; + public Uri GetRequestUrl() => _httpContextAccessor.HttpContext != null ? new Uri(_httpContextAccessor.HttpContext.Request.GetEncodedUrl()) : null; + public Uri GetApplicationUrl() { //Fixme: This causes problems with site swap on azure because azure pre-warms a site by calling into `localhost` and when it does that // it changes the URL to `localhost:80` which actually doesn't work for pinging itself, it only works internally in Azure. The ironic part // about this is that this is here specifically for the slot swap scenario https://issues.umbraco.org/issue/U4-10626 - // see U4-10626 - in some cases we want to reset the application url // (this is a simplified version of what was in 7.x) // note: should this be optional? is it expensive? @@ -77,7 +76,10 @@ namespace Umbraco.Web.Common.AspNetCore var request = _httpContextAccessor.HttpContext?.Request; - if (request is null) return _currentApplicationUrl; + if (request is null) + { + return _currentApplicationUrl; + } var url = UriHelper.BuildAbsolute(request.Scheme, request.Host); var change = url != null && !_applicationUrls.Contains(url); diff --git a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs index 48ef00e1c8..c98cbca39e 100644 --- a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs @@ -25,6 +25,7 @@ using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Runtime; using Umbraco.Infrastructure.HostedServices; +using Umbraco.Infrastructure.HostedServices.ServerRegistration; using Umbraco.Web.Common.AspNetCore; using Umbraco.Web.Common.Profiler; using ConnectionStrings = Umbraco.Core.Configuration.Models.ConnectionStrings; @@ -298,6 +299,9 @@ namespace Umbraco.Extensions services.AddHostedService(); services.AddHostedService(); + services.AddHostedService(); + services.AddHostedService(); + return services; } From 8775770d76efb7156fd24af46f0426c9bcf1494d Mon Sep 17 00:00:00 2001 From: Paul Johnson Date: Tue, 10 Nov 2020 19:04:29 +0000 Subject: [PATCH 55/56] Remove BuildServiceProvider call from UmbracoWebServiceCollectionExtensions (#9372) --- .../Testing/UmbracoIntegrationTest.cs | 2 +- .../Builder/UmbracoBuilderExtensions.cs | 2 +- .../UmbracoWebServiceCollectionExtensions.cs | 17 ++++++++--------- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs index ecdaac53b2..2a97a24fdd 100644 --- a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs +++ b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs @@ -271,7 +271,7 @@ namespace Umbraco.Tests.Integration.Testing services.AddSignalR(); - services.AddUmbracoWebComponents(); + services.AddUmbracoWebComponents(Configuration); services.AddUmbracoRuntimeMinifier(Configuration); services.AddUmbracoBackOffice(); services.AddUmbracoBackOfficeIdentity(); diff --git a/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs b/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs index 635594a77d..10f214a522 100644 --- a/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs @@ -69,7 +69,7 @@ namespace Umbraco.Web.Common.Builder => builder.AddWith(nameof(WithRuntimeMinifier), () => builder.Services.AddUmbracoRuntimeMinifier(builder.Config)); public static IUmbracoBuilder WithWebComponents(this IUmbracoBuilder builder) - => builder.AddWith(nameof(WithWebComponents), () => builder.Services.AddUmbracoWebComponents()); + => builder.AddWith(nameof(WithWebComponents), () => builder.Services.AddUmbracoWebComponents(builder.Config)); public static IUmbracoBuilder WithWebServer(this IUmbracoBuilder builder) => builder.AddWith(nameof(WithWebServer), () => diff --git a/src/Umbraco.Web.Common/Extensions/UmbracoWebServiceCollectionExtensions.cs b/src/Umbraco.Web.Common/Extensions/UmbracoWebServiceCollectionExtensions.cs index 37ac5c7683..fdab7d7169 100644 --- a/src/Umbraco.Web.Common/Extensions/UmbracoWebServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/UmbracoWebServiceCollectionExtensions.cs @@ -25,17 +25,14 @@ namespace Umbraco.Extensions /// Registers the web components needed for Umbraco /// /// + /// /// - public static IServiceCollection AddUmbracoWebComponents(this IServiceCollection services) + public static IServiceCollection AddUmbracoWebComponents(this IServiceCollection services, IConfiguration configuration) { services.ConfigureOptions(); services.TryAddEnumerable(ServiceDescriptor.Transient()); services.TryAddEnumerable(ServiceDescriptor.Transient()); - - // TODO: We need to avoid this, surely there's a way? See ContainerTests.BuildServiceProvider_Before_Host_Is_Configured - var serviceProvider = services.BuildServiceProvider(); - var imagingSettings = serviceProvider.GetService>().Value; - services.AddUmbracoImageSharp(imagingSettings); + services.AddUmbracoImageSharp(configuration); return services; } @@ -44,10 +41,12 @@ namespace Umbraco.Extensions /// Adds Image Sharp with Umbraco settings /// /// - /// + /// /// - public static IServiceCollection AddUmbracoImageSharp(this IServiceCollection services, ImagingSettings imagingSettings) + public static IServiceCollection AddUmbracoImageSharp(this IServiceCollection services, IConfiguration configuration) { + var imagingSettings = configuration.GetSection(Core.Constants.Configuration.ConfigImaging) + .Get() ?? new ImagingSettings(); services.AddImageSharp(options => { @@ -62,7 +61,7 @@ namespace Umbraco.Extensions return Task.CompletedTask; }; - options.OnBeforeSaveAsync = _ => Task.CompletedTask; + options.OnBeforeSaveAsync = _ => Task.CompletedTask; options.OnProcessedAsync = _ => Task.CompletedTask; options.OnPrepareResponseAsync = _ => Task.CompletedTask; }) From bb1b04be1569f8c560b01179ef586bf66a7d0a69 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Thu, 12 Nov 2020 11:01:19 +0100 Subject: [PATCH 56/56] Netcore: Cleanup and migrate few classes from Umbraco.Web (#9375) * Migrated a few classes, and cleaned up by removing some old classs too in the Umbraco.Web Project Signed-off-by: Bjarke Berg * Migrated a few classes, and cleaned up by removing some old classs too in the Umbraco.Web Project Signed-off-by: Bjarke Berg * Moved SurfaceControllerTypeCollection + Builder Signed-off-by: Bjarke Berg * Moved Extension methods Signed-off-by: Bjarke Berg * Removed Wrap methods.. People should use their own TagBuilder Signed-off-by: Bjarke Berg --- .../HtmlHelperExtensionMethodsTests.cs | 118 +++++ ...lidateUmbracoFormRouteStringFilterTests.cs | 41 ++ .../Mvc/HtmlStringUtilitiesTests.cs | 3 +- .../Security/EncryptionHelperTests.cs} | 23 +- .../Publishing/PublishingStrategyTests.cs | 59 --- .../Routing/RenderRouteHandlerTests.cs | 6 +- .../Runtimes/CoreRuntimeTests.cs | 173 ------- src/Umbraco.Tests/Umbraco.Tests.csproj | 7 - .../BackOfficeControllerUnitTests.cs | 26 - .../Mvc/HtmlHelperExtensionMethodsTests.cs | 131 ------ ...ateUmbracoFormRouteStringAttributeTests.cs | 37 -- .../Controllers/AuthenticationController.cs | 6 +- .../Controllers/BackOfficeController.cs | 5 +- .../Controllers/ContentController.cs | 2 +- .../Controllers/CurrentUserController.cs | 4 +- .../Controllers/DashboardController.cs | 2 +- .../Controllers/PreviewController.cs | 4 +- .../UmbracoAuthorizedApiController.cs | 2 +- .../AspNetCore/UmbracoViewPage.cs | 16 +- .../Constants/ViewConstants.cs | 7 + .../HttpUmbracoFormRouteStringException.cs | 44 ++ .../BlockListTemplateExtensions.cs | 18 +- .../Extensions}/CacheHelperExtensions.cs | 14 +- .../Extensions/RazorPageExtensions.cs | 19 + .../Extensions/ViewContextExtensions.cs | 75 +++ ...=> UmbracoBackOfficeAuthorizeAttribute.cs} | 8 +- ...cs => UmbracoBackOfficeAuthorizeFilter.cs} | 8 +- .../UmbracoMemberAuthorizeAttribute.cs | 20 + .../Filters/UmbracoMemberAuthorizeFilter.cs | 69 +++ ...ValidateUmbracoFormRouteStringAttribute.cs | 74 +++ .../Mvc}/HtmlStringUtilities.cs | 13 +- .../Security/EncryptionHelper.cs | 104 ++++ .../RedirectToUmbracoPageResult.cs | 24 +- .../SurfaceControllerTypeCollection.cs | 2 +- .../SurfaceControllerTypeCollectionBuilder.cs | 4 +- .../Controllers/SurfaceController.cs | 12 +- .../UmbracoAuthorizedController.cs | 2 +- .../Extensions/HtmlContentExtensions.cs | 17 + .../Extensions}/HtmlHelperRenderExtensions.cs | 357 +++++++------- .../Extensions/TypeLoaderExtensions.cs | 28 ++ ...racoWebstiteServiceCollectionExtensions.cs | 2 + .../Runtime/WebsiteComposer.cs | 5 + src/Umbraco.Web.Website/UmbracoHelper.cs | 445 ++++++++++++++++++ .../AreaRegistrationContextExtensions.cs | 28 -- src/Umbraco.Web/Composing/Current.cs | 3 - .../Editors/BackOfficeController.cs | 2 +- .../Mvc/ActionExecutedEventArgs.cs | 18 - .../Mvc/AdminTokenAuthorizeAttribute.cs | 127 ----- src/Umbraco.Web/Mvc/BackOfficeArea.cs | 54 --- src/Umbraco.Web/Mvc/Constants.cs | 13 - .../Mvc/DisableBrowserCacheAttribute.cs | 43 -- src/Umbraco.Web/Mvc/HtmlTagWrapper.cs | 212 --------- src/Umbraco.Web/Mvc/HtmlTagWrapperTextNode.cs | 18 - src/Umbraco.Web/Mvc/IHtmlTagWrapper.cs | 9 - .../Mvc/UmbracoViewPageOfTModel.cs | 97 ---- ...ValidateUmbracoFormRouteStringAttribute.cs | 4 +- src/Umbraco.Web/Mvc/ViewContextExtensions.cs | 53 --- .../Runtime/WebInitialComponent.cs | 15 +- src/Umbraco.Web/Runtime/WebInitialComposer.cs | 4 +- src/Umbraco.Web/TypeLoaderExtensions.cs | 1 + src/Umbraco.Web/Umbraco.Web.csproj | 19 +- src/Umbraco.Web/UmbracoHelper.cs | 2 + src/Umbraco.Web/UrlHelperRenderExtensions.cs | 139 +++--- src/Umbraco.Web/WebViewPageExtensions.cs | 30 -- 64 files changed, 1434 insertions(+), 1493 deletions(-) create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Extensions/HtmlHelperExtensionMethodsTests.cs create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Filters/ValidateUmbracoFormRouteStringFilterTests.cs rename src/{Umbraco.Tests/Web => Umbraco.Tests.UnitTests/Umbraco.Web.Common}/Mvc/HtmlStringUtilitiesTests.cs (94%) rename src/{Umbraco.Tests/Web/UrlHelperExtensionTests.cs => Umbraco.Tests.UnitTests/Umbraco.Web.Common/Security/EncryptionHelperTests.cs} (59%) delete mode 100644 src/Umbraco.Tests/Publishing/PublishingStrategyTests.cs delete mode 100644 src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs delete mode 100644 src/Umbraco.Tests/Web/Controllers/BackOfficeControllerUnitTests.cs delete mode 100644 src/Umbraco.Tests/Web/Mvc/HtmlHelperExtensionMethodsTests.cs delete mode 100644 src/Umbraco.Tests/Web/Mvc/ValidateUmbracoFormRouteStringAttributeTests.cs create mode 100644 src/Umbraco.Web.Common/Exceptions/HttpUmbracoFormRouteStringException.cs rename src/{Umbraco.Web => Umbraco.Web.Common/Extensions}/BlockListTemplateExtensions.cs (51%) rename src/{Umbraco.Web => Umbraco.Web.Common/Extensions}/CacheHelperExtensions.cs (83%) create mode 100644 src/Umbraco.Web.Common/Extensions/RazorPageExtensions.cs create mode 100644 src/Umbraco.Web.Common/Extensions/ViewContextExtensions.cs rename src/Umbraco.Web.Common/Filters/{UmbracoAuthorizeAttribute.cs => UmbracoBackOfficeAuthorizeAttribute.cs} (66%) rename src/Umbraco.Web.Common/Filters/{UmbracoAuthorizeFilter.cs => UmbracoBackOfficeAuthorizeFilter.cs} (94%) create mode 100644 src/Umbraco.Web.Common/Filters/UmbracoMemberAuthorizeAttribute.cs create mode 100644 src/Umbraco.Web.Common/Filters/UmbracoMemberAuthorizeFilter.cs create mode 100644 src/Umbraco.Web.Common/Filters/ValidateUmbracoFormRouteStringAttribute.cs rename src/{Umbraco.Web => Umbraco.Web.Common/Mvc}/HtmlStringUtilities.cs (97%) create mode 100644 src/Umbraco.Web.Common/Security/EncryptionHelper.cs rename src/{Umbraco.Web/Mvc => Umbraco.Web.Website/Collections}/SurfaceControllerTypeCollection.cs (87%) rename src/{Umbraco.Web/Mvc => Umbraco.Web.Website/Collections}/SurfaceControllerTypeCollectionBuilder.cs (79%) create mode 100644 src/Umbraco.Web.Website/Extensions/HtmlContentExtensions.cs rename src/{Umbraco.Web => Umbraco.Web.Website/Extensions}/HtmlHelperRenderExtensions.cs (79%) create mode 100644 src/Umbraco.Web.Website/Extensions/TypeLoaderExtensions.cs create mode 100644 src/Umbraco.Web.Website/UmbracoHelper.cs delete mode 100644 src/Umbraco.Web/AreaRegistrationContextExtensions.cs delete mode 100644 src/Umbraco.Web/Mvc/ActionExecutedEventArgs.cs delete mode 100644 src/Umbraco.Web/Mvc/AdminTokenAuthorizeAttribute.cs delete mode 100644 src/Umbraco.Web/Mvc/BackOfficeArea.cs delete mode 100644 src/Umbraco.Web/Mvc/Constants.cs delete mode 100644 src/Umbraco.Web/Mvc/DisableBrowserCacheAttribute.cs delete mode 100644 src/Umbraco.Web/Mvc/HtmlTagWrapper.cs delete mode 100644 src/Umbraco.Web/Mvc/HtmlTagWrapperTextNode.cs delete mode 100644 src/Umbraco.Web/Mvc/IHtmlTagWrapper.cs delete mode 100644 src/Umbraco.Web/Mvc/ViewContextExtensions.cs delete mode 100644 src/Umbraco.Web/WebViewPageExtensions.cs diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Extensions/HtmlHelperExtensionMethodsTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Extensions/HtmlHelperExtensionMethodsTests.cs new file mode 100644 index 0000000000..abb44a5dfb --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Extensions/HtmlHelperExtensionMethodsTests.cs @@ -0,0 +1,118 @@ +using System.Text.Encodings.Web; +using Microsoft.AspNetCore.Mvc.ModelBinding; +using Microsoft.AspNetCore.Mvc.ViewEngines; +using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Mvc.ViewFeatures.Buffers; +using Microsoft.Extensions.WebEncoders.Testing; +using Moq; +using NUnit.Framework; +using Umbraco.Extensions; + +namespace Umbraco.Tests.UnitTests.Umbraco.Web.Common.Filters +{ + + [TestFixture] + public class HtmlHelperExtensionMethodsTests + { + private const string SampleWithAnchorElement = "Hello world, this is some text with a link"; + private const string SampleWithBoldAndAnchorElements = "Hello world, this is some text with a link"; + + [SetUp] + public virtual void Initialize() + { + //create an empty htmlHelper + _htmlHelper = new HtmlHelper(Mock.Of(), + Mock.Of(), + Mock.Of(), + Mock.Of(), + new HtmlTestEncoder(), + UrlEncoder.Default); + } + + private HtmlHelper _htmlHelper; + + [Test] + public void Truncate_Simple() + { + var result = _htmlHelper.Truncate(SampleWithAnchorElement, 25).ToString(); + + Assert.AreEqual("Hello world, this is some…", result); + } + + [Test] + public void When_Truncating_A_String_Ends_With_A_Space_We_Should_Trim_The_Space_Before_Appending_The_Ellipsis() + { + var result = _htmlHelper.Truncate(SampleWithAnchorElement, 26).ToString(); + + Assert.AreEqual("Hello world, this is some…", result); + } + + [Test] + public void Truncate_Inside_Word() + { + var result = _htmlHelper.Truncate(SampleWithAnchorElement, 24).ToString(); + + Assert.AreEqual("Hello world, this is som…", result); + } + + [Test] + public void Truncate_With_Tag() + { + var result = _htmlHelper.Truncate(SampleWithAnchorElement, 35).ToString(); + + Assert.AreEqual("Hello world, this is some text with…", result); + } + + [Test] + public void Truncate_By_Words() + { + var result = _htmlHelper.TruncateByWords(SampleWithAnchorElement, 4).ToString(); + + Assert.AreEqual("Hello world, this is…", result); + } + + [Test] + public void Truncate_By_Words_With_Tag() + { + var result = _htmlHelper.TruncateByWords(SampleWithBoldAndAnchorElements, 4).ToString(); + + Assert.AreEqual("Hello world, this is…", result); + } + + [Test] + public void Truncate_By_Words_Mid_Tag() + { + var result = _htmlHelper.TruncateByWords(SampleWithAnchorElement, 7).ToString(); + + Assert.AreEqual("Hello world, this is some text with…", result); + } + + [Test] + public void Strip_All_Html() + { + var result = _htmlHelper.StripHtml(SampleWithBoldAndAnchorElements, null).ToString(); + + Assert.AreEqual("Hello world, this is some text with a link", result); + } + + [Test] + public void Strip_Specific_Html() + { + string[] tags = { "b" }; + + var result = _htmlHelper.StripHtml(SampleWithBoldAndAnchorElements, tags).ToString(); + + Assert.AreEqual(SampleWithAnchorElement, result); + } + + [Test] + public void Strip_Invalid_Html() + { + const string text = "Hello world, is some text with a link"; + + var result = _htmlHelper.StripHtml(text).ToString(); + + Assert.AreEqual("Hello world, is some text with a link", result); + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Filters/ValidateUmbracoFormRouteStringFilterTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Filters/ValidateUmbracoFormRouteStringFilterTests.cs new file mode 100644 index 0000000000..3ed4a28b06 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Filters/ValidateUmbracoFormRouteStringFilterTests.cs @@ -0,0 +1,41 @@ +using Microsoft.AspNetCore.DataProtection; +using NUnit.Framework; +using Umbraco.Web.Common.Exceptions; +using Umbraco.Web.Common.Filters; +using Umbraco.Web.Common.Security; + +namespace Umbraco.Tests.UnitTests.Umbraco.Web.Common.Filters +{ + [TestFixture] + public class ValidateUmbracoFormRouteStringFilterTests + { + private IDataProtectionProvider DataProtectionProvider { get; } = new EphemeralDataProtectionProvider(); + + [Test] + public void Validate_Route_String() + { + var filter = new ValidateUmbracoFormRouteStringAttribute.ValidateUmbracoFormRouteStringFilter(DataProtectionProvider); + + Assert.Throws(() => filter.ValidateRouteString(null, null, null, null)); + + const string ControllerName = "Test"; + const string ControllerAction = "Index"; + const string Area = "MyArea"; + var validUfprt = EncryptionHelper.CreateEncryptedRouteString(DataProtectionProvider, ControllerName, ControllerAction, Area); + + var invalidUfprt = validUfprt + "z"; + Assert.Throws(() => filter.ValidateRouteString(invalidUfprt, null, null, null)); + + Assert.Throws(() => filter.ValidateRouteString(validUfprt, ControllerName, ControllerAction, "doesntMatch")); + Assert.Throws(() => filter.ValidateRouteString(validUfprt, ControllerName, ControllerAction, null)); + Assert.Throws(() => filter.ValidateRouteString(validUfprt, ControllerName, "doesntMatch", Area)); + Assert.Throws(() => filter.ValidateRouteString(validUfprt, ControllerName, null, Area)); + Assert.Throws(() => filter.ValidateRouteString(validUfprt, "doesntMatch", ControllerAction, Area)); + Assert.Throws(() => filter.ValidateRouteString(validUfprt, null, ControllerAction, Area)); + + Assert.DoesNotThrow(() => filter.ValidateRouteString(validUfprt, ControllerName, ControllerAction, Area)); + Assert.DoesNotThrow(() => filter.ValidateRouteString(validUfprt, ControllerName.ToLowerInvariant(), ControllerAction.ToLowerInvariant(), Area.ToLowerInvariant())); + } + + } +} diff --git a/src/Umbraco.Tests/Web/Mvc/HtmlStringUtilitiesTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Mvc/HtmlStringUtilitiesTests.cs similarity index 94% rename from src/Umbraco.Tests/Web/Mvc/HtmlStringUtilitiesTests.cs rename to src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Mvc/HtmlStringUtilitiesTests.cs index 36ddecc676..4b1675b7f0 100644 --- a/src/Umbraco.Tests/Web/Mvc/HtmlStringUtilitiesTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Mvc/HtmlStringUtilitiesTests.cs @@ -1,7 +1,8 @@ using NUnit.Framework; using Umbraco.Web; +using Umbraco.Web.Common.Mvc; -namespace Umbraco.Tests.Web.Mvc +namespace Umbraco.Tests.UnitTests.Umbraco.Web.Common.Mvc { [TestFixture] public class HtmlStringUtilitiesTests diff --git a/src/Umbraco.Tests/Web/UrlHelperExtensionTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Security/EncryptionHelperTests.cs similarity index 59% rename from src/Umbraco.Tests/Web/UrlHelperExtensionTests.cs rename to src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Security/EncryptionHelperTests.cs index a4b96ab4ff..db80e2cd74 100644 --- a/src/Umbraco.Tests/Web/UrlHelperExtensionTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Security/EncryptionHelperTests.cs @@ -1,15 +1,20 @@ using System.Collections.Generic; +using Microsoft.AspNetCore.DataProtection; using NUnit.Framework; using Umbraco.Core; using Umbraco.Web; +using Umbraco.Web.Common.Security; -namespace Umbraco.Tests.Web +namespace Umbraco.Tests.UnitTests.Umbraco.Web.Common.Security { [TestFixture] - public class UrlHelperExtensionTests + public class EncryptionHelperTests { + + private IDataProtectionProvider DataProtectionProvider { get; } = new EphemeralDataProtectionProvider(); + [Test] - public static void Create_Encrypted_RouteString_From_Anonymous_Object() + public void Create_Encrypted_RouteString_From_Anonymous_Object() { var additionalRouteValues = new { @@ -19,14 +24,15 @@ namespace Umbraco.Tests.Web keY4 = "valuE4" }; - var encryptedRouteString = UrlHelperRenderExtensions.CreateEncryptedRouteString( + var encryptedRouteString = EncryptionHelper.CreateEncryptedRouteString( + DataProtectionProvider, "FormController", "FormAction", "", additionalRouteValues ); - var result = encryptedRouteString.DecryptWithMachineKey(); + var result = EncryptionHelper.Decrypt(encryptedRouteString, DataProtectionProvider); const string expectedResult = "c=FormController&a=FormAction&ar=&key1=value1&key2=value2&Key3=Value3&keY4=valuE4"; @@ -34,7 +40,7 @@ namespace Umbraco.Tests.Web } [Test] - public static void Create_Encrypted_RouteString_From_Dictionary() + public void Create_Encrypted_RouteString_From_Dictionary() { var additionalRouteValues = new Dictionary() { @@ -44,14 +50,15 @@ namespace Umbraco.Tests.Web {"keY4", "valuE4"} }; - var encryptedRouteString = UrlHelperRenderExtensions.CreateEncryptedRouteString( + var encryptedRouteString = EncryptionHelper.CreateEncryptedRouteString( + DataProtectionProvider, "FormController", "FormAction", "", additionalRouteValues ); - var result = encryptedRouteString.DecryptWithMachineKey(); + var result = EncryptionHelper.Decrypt(encryptedRouteString, DataProtectionProvider); const string expectedResult = "c=FormController&a=FormAction&ar=&key1=value1&key2=value2&Key3=Value3&keY4=valuE4"; diff --git a/src/Umbraco.Tests/Publishing/PublishingStrategyTests.cs b/src/Umbraco.Tests/Publishing/PublishingStrategyTests.cs deleted file mode 100644 index 342aa99b47..0000000000 --- a/src/Umbraco.Tests/Publishing/PublishingStrategyTests.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System.Collections.Generic; -using NUnit.Framework; -using Umbraco.Core; -using Umbraco.Core.Events; -using Umbraco.Core.Models; -using Umbraco.Tests.TestHelpers; -using Umbraco.Tests.TestHelpers.Entities; -using System.Linq; -using Microsoft.Extensions.DependencyInjection; -using Umbraco.Core.Services; -using Umbraco.Tests.Testing; - -namespace Umbraco.Tests.Publishing -{ - [TestFixture] - [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest)] - public class PublishingStrategyTests : TestWithDatabaseBase - { - private IContent _homePage; - - [NUnit.Framework.Ignore("fixme - ignored test")] - [Test] - public void Can_Publish_And_Update_Xml_Cache() - { - // TODO: Create new test - } - - public IEnumerable CreateTestData() - { - //NOTE Maybe not the best way to create/save test data as we are using the services, which are being tested. - - //Create and Save ContentType "umbTextpage" -> 1045 - ContentType contentType = MockedContentTypes.CreateSimpleContentType("umbTextpage", "Textpage"); - ServiceContext.FileService.SaveTemplate(contentType.DefaultTemplate); // else, FK violation on contentType! - ServiceContext.ContentTypeService.Save(contentType); - var mandatoryType = MockedContentTypes.CreateSimpleContentType("umbMandatory", "Mandatory Doc Type", true); - //ServiceContext.FileService.SaveTemplate(mandatoryType.DefaultTemplate); // else, FK violation on contentType! - ServiceContext.ContentTypeService.Save(mandatoryType); - - //Create and Save Content "Homepage" based on "umbTextpage" -> 1046 - _homePage = MockedContent.CreateSimpleContent(contentType); - ServiceContext.ContentService.Save(_homePage, 0); - - //Create and Save Content "Text Page 1" based on "umbTextpage" -> 1047 - Content subpage = MockedContent.CreateSimpleContent(contentType, "Text Page 1", _homePage.Id); - ServiceContext.ContentService.Save(subpage, 0); - - //Create and Save Content "Text Page 2" based on "umbTextpage" -> 1048 - Content subpage2 = MockedContent.CreateSimpleContent(contentType, "Text Page 2", _homePage.Id); - ServiceContext.ContentService.Save(subpage2, 0); - - //Create and Save Content "Text Page 3" based on "umbTextpage" -> 1048 - Content subpage3 = MockedContent.CreateSimpleContent(contentType, "Text Page 3", subpage2.Id); - ServiceContext.ContentService.Save(subpage3, 0); - - return new[] {_homePage, subpage, subpage2, subpage3}; - } - } -} diff --git a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs index de20211774..b3663738dd 100644 --- a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs +++ b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs @@ -48,7 +48,7 @@ namespace Umbraco.Tests.Routing new TestUmbracoContextAccessor(), TestObjects.GetGlobalSettings(), ShortStringHelper, - new SurfaceControllerTypeCollection(Enumerable.Empty()), + // new SurfaceControllerTypeCollection(Enumerable.Empty()), new UmbracoApiControllerTypeCollection(Enumerable.Empty()), HostingEnvironment); } @@ -69,8 +69,8 @@ namespace Umbraco.Tests.Routing // set the default RenderMvcController Current.DefaultRenderMvcControllerType = typeof(RenderMvcController); // FIXME: Wrong! - var surfaceControllerTypes = new SurfaceControllerTypeCollection(Composition.TypeLoader.GetSurfaceControllers()); - Composition.Services.AddUnique(surfaceControllerTypes); + // var surfaceControllerTypes = new SurfaceControllerTypeCollection(Composition.TypeLoader.GetSurfaceControllers()); + // Composition.Services.AddUnique(surfaceControllerTypes); var umbracoApiControllerTypes = new UmbracoApiControllerTypeCollection(Composition.TypeLoader.GetUmbracoApiControllers()); Composition.Services.AddUnique(umbracoApiControllerTypes); diff --git a/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs b/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs deleted file mode 100644 index 70beb3643a..0000000000 --- a/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs +++ /dev/null @@ -1,173 +0,0 @@ -using System; -using System.Collections.Generic; -using Examine; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Options; -using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Logging.Abstractions; -using Moq; -using NUnit.Framework; -using Umbraco.Core; -using Umbraco.Core.Cache; -using Umbraco.Core.Composing; -using Umbraco.Core.Configuration; -using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Exceptions; -using Umbraco.Core.Hosting; -using Umbraco.Core.IO; -using Umbraco.Core.Logging; -using Umbraco.Core.Persistence; -using Umbraco.Core.Runtime; -using Umbraco.Net; -using Umbraco.Tests.TestHelpers; -using Umbraco.Tests.TestHelpers.Stubs; -using Umbraco.Web; -using Umbraco.Web.Hosting; -using Umbraco.Web.Runtime; -using ConnectionStrings = Umbraco.Core.Configuration.Models.ConnectionStrings; -using Current = Umbraco.Web.Composing.Current; - -namespace Umbraco.Tests.Runtimes -{ - [TestFixture] - public class CoreRuntimeTests - { - [SetUp] - public void SetUp() - { - TestComponent.Reset(); - } - - public void TearDown() - { - TestComponent.Reset(); - } - - - // test application - public class TestUmbracoApplication : UmbracoApplicationBase - { - public TestUmbracoApplication() : base(new NullLogger(), - NullLoggerFactory.Instance, - new SecuritySettings(), - new GlobalSettings(), - new ConnectionStrings(), - _ioHelper, _profiler, new AspNetHostingEnvironment(Options.Create(new HostingSettings())), new AspNetBackOfficeInfo(_globalSettings, _ioHelper, new NullLogger(), Options.Create(new WebRoutingSettings()))) - { - } - - private static readonly IIOHelper _ioHelper = TestHelper.IOHelper; - private static readonly IProfiler _profiler = new TestProfiler(); - private static readonly GlobalSettings _globalSettings = new GlobalSettings(); - - - - protected override CoreRuntimeBootstrapper GetRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) - { - return new TestRuntimeBootstrapper(globalSettings, connectionStrings, umbracoVersion, ioHelper, logger, loggerFactory, profiler, hostingEnvironment, backOfficeInfo); - } - } - - // test runtime - public class TestRuntimeBootstrapper : CoreRuntimeBootstrapper - { - public TestRuntimeBootstrapper(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) - :base(globalSettings, connectionStrings,umbracoVersion, ioHelper, loggerFactory, profiler, new AspNetUmbracoBootPermissionChecker(), hostingEnvironment, backOfficeInfo, TestHelper.DbProviderFactoryCreator, TestHelper.MainDom, TestHelper.GetTypeFinder(), AppCaches.NoCache) - { - - } - - // must override the database factory - // else BootFailedException because U cannot connect to the configured db - protected internal override IUmbracoDatabaseFactory CreateBootstrapDatabaseFactory() - { - var mock = new Mock(); - mock.Setup(x => x.Configured).Returns(true); - mock.Setup(x => x.CanConnect).Returns(true); - return mock.Object; - } - - public override void Configure(IServiceCollection services) - { - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(typeof(ILogger<>), typeof(Logger<>)); - - - base.Configure(services); - } - - // runs with only one single component - // UmbracoCoreComponent will be force-added too - // and that's it - protected override IEnumerable GetComposerTypes(TypeLoader typeLoader) - { - return new[] { typeof(TestComposer) }; - } - } - - - public class TestComposer : IComposer - { - // test flags - public static bool Ctored; - public static bool Composed; - - public static void Reset() - { - Ctored = Composed = false; - } - - public TestComposer() - { - Ctored = true; - } - - public void Compose(Composition composition) - { - composition.Services.AddUnique(); - composition.Components().Append(); - - Composed = true; - } - } - - public class TestComponent : IComponent, IDisposable - { - // test flags - public static bool Ctored; - public static bool Initialized; - public static bool Terminated; - public static IProfilingLogger ProfilingLogger; - - public bool Disposed; - - public static void Reset() - { - Ctored = Initialized = Terminated = false; - ProfilingLogger = null; - } - - public TestComponent(IProfilingLogger proflog) - { - Ctored = true; - ProfilingLogger = proflog; - } - - public void Initialize() - { - Initialized = true; - } - - public void Terminate() - { - Terminated = true; - } - - public void Dispose() - { - Disposed = true; - } - } - } -} diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 5d6d4222e4..ec62d7f1f5 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -141,7 +141,6 @@ - @@ -202,20 +201,16 @@ - - - - @@ -242,7 +237,6 @@ - @@ -283,7 +277,6 @@ - diff --git a/src/Umbraco.Tests/Web/Controllers/BackOfficeControllerUnitTests.cs b/src/Umbraco.Tests/Web/Controllers/BackOfficeControllerUnitTests.cs deleted file mode 100644 index fa9335bc3f..0000000000 --- a/src/Umbraco.Tests/Web/Controllers/BackOfficeControllerUnitTests.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Linq; -using NUnit.Framework; -using Umbraco.Web.Editors; - -namespace Umbraco.Tests.Web.Controllers -{ - [TestFixture] - public class BackOfficeControllerUnitTests - { - public static object[] TestLegacyJsActionPaths = new object[] { - new string[] - { - "alert('hello');", - "function test() { window.location = 'http://www.google.com'; }", - "function openCourierSecurity(userid){ UmbClientMgr.contentFrame('page?userid=123); }", - @"function openRepository(repo, folder){ UmbClientMgr.contentFrame('page?repo=repo&folder=folder); } - function openTransfer(revision, repo, folder){ UmbClientMgr.contentFrame('page?revision=revision&repo=repo&folder=folder); }", - "umbraco/js/test.js", - "/umbraco/js/test.js", - "~/umbraco/js/test.js" - } - }; - - - } -} diff --git a/src/Umbraco.Tests/Web/Mvc/HtmlHelperExtensionMethodsTests.cs b/src/Umbraco.Tests/Web/Mvc/HtmlHelperExtensionMethodsTests.cs deleted file mode 100644 index 1a4220c83b..0000000000 --- a/src/Umbraco.Tests/Web/Mvc/HtmlHelperExtensionMethodsTests.cs +++ /dev/null @@ -1,131 +0,0 @@ -using System.Web.Mvc; -using NUnit.Framework; -using Umbraco.Web; - -namespace Umbraco.Tests.Web.Mvc -{ - - [TestFixture] - public class HtmlHelperExtensionMethodsTests - { - private const string SampleWithAnchorElement = "Hello world, this is some text with a link"; - private const string SampleWithBoldAndAnchorElements = "Hello world, this is some text with a link"; - - [SetUp] - public virtual void Initialize() - { - //create an empty htmlHelper - _htmlHelper = new HtmlHelper(new ViewContext(), new ViewPage()); - } - - private HtmlHelper _htmlHelper; - - [Test] - public void Wrap_Simple() - { - var output = _htmlHelper.Wrap("div", "hello world"); - Assert.AreEqual("
hello world
", output.ToHtmlString()); - } - - [Test] - public void Wrap_Object_Attributes() - { - var output = _htmlHelper.Wrap("div", "hello world", new {style = "color:red;", onclick = "void();"}); - Assert.AreEqual("
hello world
", output.ToHtmlString()); - } - - [Test] - public static void Truncate_Simple() - { - var helper = new HtmlHelper(new ViewContext(), new ViewPage()); - var result = helper.Truncate(SampleWithAnchorElement, 25).ToString(); - - Assert.AreEqual("Hello world, this is some…", result); - } - - [Test] - public static void When_Truncating_A_String_Ends_With_A_Space_We_Should_Trim_The_Space_Before_Appending_The_Ellipsis() - { - var helper = new HtmlHelper(new ViewContext(), new ViewPage()); - var result = helper.Truncate(SampleWithAnchorElement, 26).ToString(); - - Assert.AreEqual("Hello world, this is some…", result); - } - - [Test] - public static void Truncate_Inside_Word() - { - var helper = new HtmlHelper(new ViewContext(), new ViewPage()); - var result = helper.Truncate(SampleWithAnchorElement, 24).ToString(); - - Assert.AreEqual("Hello world, this is som…", result); - } - - [Test] - public static void Truncate_With_Tag() - { - var helper = new HtmlHelper(new ViewContext(), new ViewPage()); - var result = helper.Truncate(SampleWithAnchorElement, 35).ToString(); - - Assert.AreEqual("Hello world, this is some text with…", result); - } - - [Test] - public static void Truncate_By_Words() - { - var helper = new HtmlHelper(new ViewContext(), new ViewPage()); - var result = helper.TruncateByWords(SampleWithAnchorElement, 4).ToString(); - - Assert.AreEqual("Hello world, this is…", result); - } - - [Test] - public static void Truncate_By_Words_With_Tag() - { - var helper = new HtmlHelper(new ViewContext(), new ViewPage()); - var result = helper.TruncateByWords(SampleWithBoldAndAnchorElements, 4).ToString(); - - Assert.AreEqual("Hello world, this is…", result); - } - - [Test] - public static void Truncate_By_Words_Mid_Tag() - { - var helper = new HtmlHelper(new ViewContext(), new ViewPage()); - var result = helper.TruncateByWords(SampleWithAnchorElement, 7).ToString(); - - Assert.AreEqual("Hello world, this is some text with…", result); - } - - [Test] - public static void Strip_All_Html() - { - var helper = new HtmlHelper(new ViewContext(), new ViewPage()); - var result = helper.StripHtml(SampleWithBoldAndAnchorElements, null).ToString(); - - Assert.AreEqual("Hello world, this is some text with a link", result); - } - - [Test] - public static void Strip_Specific_Html() - { - string[] tags = { "b" }; - - var helper = new HtmlHelper(new ViewContext(), new ViewPage()); - var result = helper.StripHtml(SampleWithBoldAndAnchorElements, tags).ToString(); - - Assert.AreEqual(SampleWithAnchorElement, result); - } - - [Test] - public static void Strip_Invalid_Html() - { - const string text = "Hello world, is some text with a link"; - - var helper = new HtmlHelper(new ViewContext(), new ViewPage()); - var result = helper.StripHtml(text).ToString(); - - Assert.AreEqual("Hello world, is some text with a link", result); - } - } -} diff --git a/src/Umbraco.Tests/Web/Mvc/ValidateUmbracoFormRouteStringAttributeTests.cs b/src/Umbraco.Tests/Web/Mvc/ValidateUmbracoFormRouteStringAttributeTests.cs deleted file mode 100644 index d4c3b7c887..0000000000 --- a/src/Umbraco.Tests/Web/Mvc/ValidateUmbracoFormRouteStringAttributeTests.cs +++ /dev/null @@ -1,37 +0,0 @@ -using NUnit.Framework; -using Umbraco.Web; -using Umbraco.Web.Mvc; - -namespace Umbraco.Tests.Web.Mvc -{ - [TestFixture] - public class ValidateUmbracoFormRouteStringAttributeTests - { - [Test] - public void Validate_Route_String() - { - var attribute = new ValidateUmbracoFormRouteStringAttribute(); - - Assert.Throws(() => attribute.ValidateRouteString(null, null, null, null)); - - const string ControllerName = "Test"; - const string ControllerAction = "Index"; - const string Area = "MyArea"; - var validUfprt = UrlHelperRenderExtensions.CreateEncryptedRouteString(ControllerName, ControllerAction, Area); - - var invalidUfprt = validUfprt + "z"; - Assert.Throws(() => attribute.ValidateRouteString(invalidUfprt, null, null, null)); - - Assert.Throws(() => attribute.ValidateRouteString(validUfprt, ControllerName, ControllerAction, "doesntMatch")); - Assert.Throws(() => attribute.ValidateRouteString(validUfprt, ControllerName, ControllerAction, null)); - Assert.Throws(() => attribute.ValidateRouteString(validUfprt, ControllerName, "doesntMatch", Area)); - Assert.Throws(() => attribute.ValidateRouteString(validUfprt, ControllerName, null, Area)); - Assert.Throws(() => attribute.ValidateRouteString(validUfprt, "doesntMatch", ControllerAction, Area)); - Assert.Throws(() => attribute.ValidateRouteString(validUfprt, null, ControllerAction, Area)); - - Assert.DoesNotThrow(() => attribute.ValidateRouteString(validUfprt, ControllerName, ControllerAction, Area)); - Assert.DoesNotThrow(() => attribute.ValidateRouteString(validUfprt, ControllerName.ToLowerInvariant(), ControllerAction.ToLowerInvariant(), Area.ToLowerInvariant())); - } - - } -} diff --git a/src/Umbraco.Web.BackOffice/Controllers/AuthenticationController.cs b/src/Umbraco.Web.BackOffice/Controllers/AuthenticationController.cs index 511254e96b..928c0dcd3d 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/AuthenticationController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/AuthenticationController.cs @@ -95,7 +95,7 @@ namespace Umbraco.Web.BackOffice.Controllers /// Returns the configuration for the backoffice user membership provider - used to configure the change password dialog /// /// - [UmbracoAuthorize] + [UmbracoBackOfficeAuthorize] public IDictionary GetPasswordConfig(int userId) { return _passwordConfiguration.GetConfiguration(userId != _backofficeSecurityAccessor.BackofficeSecurity.CurrentUser.Id); @@ -183,7 +183,7 @@ namespace Umbraco.Web.BackOffice.Controllers /// is valid before the login screen is displayed. The Auth cookie can be persisted for up to a day but the csrf cookies are only session /// cookies which means that the auth cookie could be valid but the csrf cookies are no longer there, in that case we need to re-set the csrf cookies. /// - [UmbracoAuthorize] + [UmbracoBackOfficeAuthorize] [SetAngularAntiForgeryTokens] //[CheckIfUserTicketDataIsStale] // TODO: Migrate this, though it will need to be done differently at the cookie auth level public UserDetail GetCurrentUser() @@ -205,7 +205,7 @@ namespace Umbraco.Web.BackOffice.Controllers /// /// We cannot user GetCurrentUser since that requires they are approved, this is the same as GetCurrentUser but doesn't require them to be approved /// - [UmbracoAuthorize(redirectToUmbracoLogin: false, requireApproval: false)] + [UmbracoBackOfficeAuthorize(redirectToUmbracoLogin: false, requireApproval: false)] [SetAngularAntiForgeryTokens] public ActionResult GetCurrentInvitedUser() { diff --git a/src/Umbraco.Web.BackOffice/Controllers/BackOfficeController.cs b/src/Umbraco.Web.BackOffice/Controllers/BackOfficeController.cs index 99eae2c459..06ac53441b 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/BackOfficeController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/BackOfficeController.cs @@ -5,6 +5,7 @@ using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; +using Microsoft.AspNetCore.DataProtection; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Microsoft.Extensions.Logging; @@ -220,7 +221,7 @@ namespace Umbraco.Web.BackOffice.Controllers return nestedDictionary; } - [UmbracoAuthorize(Order = 0)] + [UmbracoBackOfficeAuthorize(Order = 0)] [HttpGet] public IEnumerable GetGridConfig() { @@ -231,7 +232,7 @@ namespace Umbraco.Web.BackOffice.Controllers /// Returns the JavaScript object representing the static server variables javascript object /// /// - [UmbracoAuthorize(Order = 0)] + [UmbracoBackOfficeAuthorize(Order = 0)] [MinifyJavaScriptResult(Order = 1)] public async Task ServerVariables() { diff --git a/src/Umbraco.Web.BackOffice/Controllers/ContentController.cs b/src/Umbraco.Web.BackOffice/Controllers/ContentController.cs index 6dd7164520..709be76acc 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/ContentController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/ContentController.cs @@ -131,7 +131,7 @@ namespace Umbraco.Web.BackOffice.Controllers /// /// [HttpGet] - [UmbracoAuthorize, OverrideAuthorization] + [UmbracoBackOfficeAuthorize, OverrideAuthorization] public bool AllowsCultureVariation() { var contentTypes = _contentTypeService.GetAll(); diff --git a/src/Umbraco.Web.BackOffice/Controllers/CurrentUserController.cs b/src/Umbraco.Web.BackOffice/Controllers/CurrentUserController.cs index 0254021b40..3605e65563 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/CurrentUserController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/CurrentUserController.cs @@ -170,7 +170,7 @@ namespace Umbraco.Web.BackOffice.Controllers /// /// This only works when the user is logged in (partially) /// - [UmbracoAuthorize(redirectToUmbracoLogin: false, requireApproval : true)] + [UmbracoBackOfficeAuthorize(redirectToUmbracoLogin: false, requireApproval : true)] public async Task PostSetInvitedUserPassword([FromBody]string newPassword) { var user = await _backOfficeUserManager.FindByIdAsync(_backofficeSecurityAccessor.BackofficeSecurity.GetUserId().ResultOr(0).ToString()); @@ -235,7 +235,7 @@ namespace Umbraco.Web.BackOffice.Controllers throw HttpResponseException.CreateValidationErrorResponse(ModelState); } - [UmbracoAuthorize] + [UmbracoBackOfficeAuthorize] [ValidateAngularAntiForgeryToken] public async Task> GetCurrentUserLinkedLogins() { diff --git a/src/Umbraco.Web.BackOffice/Controllers/DashboardController.cs b/src/Umbraco.Web.BackOffice/Controllers/DashboardController.cs index 0d341e9a04..4d12f8db0c 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/DashboardController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/DashboardController.cs @@ -29,7 +29,7 @@ namespace Umbraco.Web.BackOffice.Controllers [ValidationFilter] [AngularJsonOnlyConfiguration] // TODO: This could be applied with our Application Model conventions [IsBackOffice] - [UmbracoAuthorize] + [UmbracoBackOfficeAuthorize] public class DashboardController : UmbracoApiController { private readonly IUmbracoContextAccessor _umbracoContextAccessor; diff --git a/src/Umbraco.Web.BackOffice/Controllers/PreviewController.cs b/src/Umbraco.Web.BackOffice/Controllers/PreviewController.cs index 07e3cb13da..cd320d49ff 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/PreviewController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/PreviewController.cs @@ -64,7 +64,7 @@ namespace Umbraco.Web.BackOffice.Controllers _viewEngines = viewEngines; } - [UmbracoAuthorize(redirectToUmbracoLogin: true, requireApproval : false)] + [UmbracoBackOfficeAuthorize(redirectToUmbracoLogin: true, requireApproval : false)] [DisableBrowserCache] public ActionResult Index() { @@ -107,7 +107,7 @@ namespace Umbraco.Web.BackOffice.Controllers /// The endpoint that is loaded within the preview iframe /// /// - [UmbracoAuthorize] + [UmbracoBackOfficeAuthorize] public ActionResult Frame(int id, string culture) { var user = _backofficeSecurityAccessor.BackofficeSecurity.CurrentUser; diff --git a/src/Umbraco.Web.BackOffice/Controllers/UmbracoAuthorizedApiController.cs b/src/Umbraco.Web.BackOffice/Controllers/UmbracoAuthorizedApiController.cs index c232401b78..e3d779d61d 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/UmbracoAuthorizedApiController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/UmbracoAuthorizedApiController.cs @@ -16,7 +16,7 @@ namespace Umbraco.Web.BackOffice.Controllers /// [IsBackOffice] [UmbracoUserTimeoutFilter] - [UmbracoAuthorize] + [UmbracoBackOfficeAuthorize] [DisableBrowserCache] [UmbracoWebApiRequireHttps] [CheckIfUserTicketDataIsStale] diff --git a/src/Umbraco.Web.Common/AspNetCore/UmbracoViewPage.cs b/src/Umbraco.Web.Common/AspNetCore/UmbracoViewPage.cs index cf41670d8e..4b8f730e45 100644 --- a/src/Umbraco.Web.Common/AspNetCore/UmbracoViewPage.cs +++ b/src/Umbraco.Web.Common/AspNetCore/UmbracoViewPage.cs @@ -1,6 +1,7 @@ using System; using System.Text; using System.Threading.Tasks; +using Microsoft.AspNetCore.Html; using Microsoft.AspNetCore.Http.Extensions; using Microsoft.AspNetCore.Mvc.ModelBinding; using Microsoft.AspNetCore.Mvc.Razor; @@ -8,12 +9,12 @@ using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Umbraco.Core; -using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.Strings; +using Umbraco.Extensions; using Umbraco.Web.Common.ModelBinders; namespace Umbraco.Web.Common.AspNetCore @@ -110,6 +111,8 @@ namespace Umbraco.Web.Common.AspNetCore ViewData = (ViewDataDictionary) viewData; } + + // viewData is the ViewDataDictionary (maybe ) that we have // modelType is the type of the model that we need to bind to // @@ -143,5 +146,16 @@ namespace Umbraco.Web.Common.AspNetCore var nViewData = (ViewDataDictionary)Activator.CreateInstance(nViewDataType, tViewData); return nViewData; } + + public HtmlString RenderSection(string name, HtmlString defaultContents) + { + return RazorPageExtensions.RenderSection(this, name, defaultContents); + } + + public HtmlString RenderSection(string name, string defaultContents) + { + return RazorPageExtensions.RenderSection(this, name, defaultContents); + } + } } diff --git a/src/Umbraco.Web.Common/Constants/ViewConstants.cs b/src/Umbraco.Web.Common/Constants/ViewConstants.cs index 5da1a74f55..4c87509069 100644 --- a/src/Umbraco.Web.Common/Constants/ViewConstants.cs +++ b/src/Umbraco.Web.Common/Constants/ViewConstants.cs @@ -8,5 +8,12 @@ internal const string ViewLocation = "~/Views"; internal const string DataTokenCurrentViewContext = "umbraco-current-view-context"; + + internal static class ReservedAdditionalKeys + { + internal const string Controller = "c"; + internal const string Action = "a"; + internal const string Area = "ar"; + } } } diff --git a/src/Umbraco.Web.Common/Exceptions/HttpUmbracoFormRouteStringException.cs b/src/Umbraco.Web.Common/Exceptions/HttpUmbracoFormRouteStringException.cs new file mode 100644 index 0000000000..8ba326a926 --- /dev/null +++ b/src/Umbraco.Web.Common/Exceptions/HttpUmbracoFormRouteStringException.cs @@ -0,0 +1,44 @@ +using System; +using System.Runtime.Serialization; + +namespace Umbraco.Web.Common.Exceptions +{ + /// + /// Exception that occurs when an Umbraco form route string is invalid + /// + [Serializable] + public sealed class HttpUmbracoFormRouteStringException : Exception + { + /// + /// Initializes a new instance of the class. + /// + public HttpUmbracoFormRouteStringException() + { } + + /// + /// Initializes a new instance of the class. + /// + /// The that holds the serialized object data about the exception being thrown. + /// The that holds the contextual information about the source or destination. + private HttpUmbracoFormRouteStringException(SerializationInfo info, StreamingContext context) + : base(info, context) + { } + + /// + /// Initializes a new instance of the class. + /// + /// The error message displayed to the client when the exception is thrown. + public HttpUmbracoFormRouteStringException(string message) + : base(message) + { } + + /// + /// Initializes a new instance of the class. + /// + /// The error message displayed to the client when the exception is thrown. + /// The , if any, that threw the current exception. + public HttpUmbracoFormRouteStringException(string message, Exception innerException) + : base(message, innerException) + { } + } +} diff --git a/src/Umbraco.Web/BlockListTemplateExtensions.cs b/src/Umbraco.Web.Common/Extensions/BlockListTemplateExtensions.cs similarity index 51% rename from src/Umbraco.Web/BlockListTemplateExtensions.cs rename to src/Umbraco.Web.Common/Extensions/BlockListTemplateExtensions.cs index 6e105a24d6..06c3efaf02 100644 --- a/src/Umbraco.Web/BlockListTemplateExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/BlockListTemplateExtensions.cs @@ -1,30 +1,30 @@ using System; -using System.Web.Mvc; -using System.Web.Mvc.Html; using Umbraco.Core.Models.Blocks; using Umbraco.Core.Models.PublishedContent; -using System.Web; +using Microsoft.AspNetCore.Html; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Mvc.ViewFeatures; -namespace Umbraco.Web +namespace Umbraco.Extensions { public static class BlockListTemplateExtensions { public const string DefaultFolder = "BlockList/"; public const string DefaultTemplate = "Default"; - public static IHtmlString GetBlockListHtml(this HtmlHelper html, BlockListModel model, string template = DefaultTemplate) + public static IHtmlContent GetBlockListHtml(this HtmlHelper html, BlockListModel model, string template = DefaultTemplate) { - if (model?.Count == 0) return new MvcHtmlString(string.Empty); + if (model?.Count == 0) return new HtmlString(string.Empty); var view = DefaultFolder + template; return html.Partial(view, model); } - public static IHtmlString GetBlockListHtml(this HtmlHelper html, IPublishedProperty property, string template = DefaultTemplate) => GetBlockListHtml(html, property?.GetValue() as BlockListModel, template); + public static IHtmlContent GetBlockListHtml(this HtmlHelper html, IPublishedProperty property, string template = DefaultTemplate) => GetBlockListHtml(html, property?.GetValue() as BlockListModel, template); - public static IHtmlString GetBlockListHtml(this HtmlHelper html, IPublishedContent contentItem, string propertyAlias) => GetBlockListHtml(html, contentItem, propertyAlias, DefaultTemplate); + public static IHtmlContent GetBlockListHtml(this HtmlHelper html, IPublishedContent contentItem, string propertyAlias) => GetBlockListHtml(html, contentItem, propertyAlias, DefaultTemplate); - public static IHtmlString GetBlockListHtml(this HtmlHelper html, IPublishedContent contentItem, string propertyAlias, string template) + public static IHtmlContent GetBlockListHtml(this HtmlHelper html, IPublishedContent contentItem, string propertyAlias, string template) { if (propertyAlias == null) throw new ArgumentNullException(nameof(propertyAlias)); if (string.IsNullOrWhiteSpace(propertyAlias)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(propertyAlias)); diff --git a/src/Umbraco.Web/CacheHelperExtensions.cs b/src/Umbraco.Web.Common/Extensions/CacheHelperExtensions.cs similarity index 83% rename from src/Umbraco.Web/CacheHelperExtensions.cs rename to src/Umbraco.Web.Common/Extensions/CacheHelperExtensions.cs index e27b0db1fc..e8309262e6 100644 --- a/src/Umbraco.Web/CacheHelperExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/CacheHelperExtensions.cs @@ -1,11 +1,11 @@ using System; -using System.Web; -using System.Web.Mvc; -using System.Web.Mvc.Html; +using Microsoft.AspNetCore.Html; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Mvc.ViewFeatures; using Umbraco.Core.Cache; using Umbraco.Core.Hosting; -namespace Umbraco.Web +namespace Umbraco.Extensions { /// @@ -25,10 +25,10 @@ namespace Umbraco.Web /// used to cache the partial view, this key could change if it is cached by page or by member /// /// - public static IHtmlString CachedPartialView( + public static IHtmlContent CachedPartialView( this AppCaches appCaches, IHostingEnvironment hostingEnvironment, - HtmlHelper htmlHelper, + IHtmlHelper htmlHelper, string partialViewName, object model, int cachedSeconds, @@ -42,7 +42,7 @@ namespace Umbraco.Web return htmlHelper.Partial(partialViewName, model, viewData); } - return appCaches.RuntimeCache.GetCacheItem( + return appCaches.RuntimeCache.GetCacheItem( Core.CacheHelperExtensions.PartialViewCacheKey + cacheKey, () => htmlHelper.Partial(partialViewName, model, viewData), timeout: new TimeSpan(0, 0, 0, cachedSeconds)); diff --git a/src/Umbraco.Web.Common/Extensions/RazorPageExtensions.cs b/src/Umbraco.Web.Common/Extensions/RazorPageExtensions.cs new file mode 100644 index 0000000000..884e2bbdbc --- /dev/null +++ b/src/Umbraco.Web.Common/Extensions/RazorPageExtensions.cs @@ -0,0 +1,19 @@ +using Microsoft.AspNetCore.Html; +using Microsoft.AspNetCore.Mvc.Razor; + +namespace Umbraco.Extensions +{ + public static class RazorPageExtensions + { + public static HtmlString RenderSection(this RazorPage webPage, string name, HtmlString defaultContents) + { + return webPage.IsSectionDefined(name) ? webPage.RenderSection(name) : defaultContents; + } + + public static HtmlString RenderSection(this RazorPage webPage, string name, string defaultContents) + { + return webPage.IsSectionDefined(name) ? webPage.RenderSection(name) : new HtmlString(defaultContents); + } + + } +} diff --git a/src/Umbraco.Web.Common/Extensions/ViewContextExtensions.cs b/src/Umbraco.Web.Common/Extensions/ViewContextExtensions.cs new file mode 100644 index 0000000000..17a9d048fc --- /dev/null +++ b/src/Umbraco.Web.Common/Extensions/ViewContextExtensions.cs @@ -0,0 +1,75 @@ +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Mvc.ViewFeatures; + +namespace Umbraco.Extensions +{ + public static class ViewContextExtensions + { + /// + /// Creates a new ViewContext from an existing one but specifies a new Model for the ViewData + /// + /// + /// + /// + public static ViewContext CopyWithModel(this ViewContext vc, object model) + { + return new ViewContext + { + View = vc.View, + Writer = vc.Writer, + ActionDescriptor = vc.ActionDescriptor, + FormContext = vc.FormContext, + HttpContext = vc.HttpContext, + RouteData = vc.RouteData, + TempData = vc.TempData, + ViewData = new ViewDataDictionary(vc.ViewData) + { + Model = model + }, + ClientValidationEnabled = vc.ClientValidationEnabled, + ExecutingFilePath = vc.ExecutingFilePath, + ValidationMessageElement = vc.ValidationMessageElement, + Html5DateRenderingMode = vc.Html5DateRenderingMode, + ValidationSummaryMessageElement = vc.ValidationSummaryMessageElement + }; + } + + public static ViewContext Clone(this ViewContext vc) + { + return new ViewContext + { + View = vc.View, + Writer = vc.Writer, + ActionDescriptor = vc.ActionDescriptor, + FormContext = vc.FormContext, + HttpContext = vc.HttpContext, + RouteData = vc.RouteData, + TempData = vc.TempData, + ViewData = new ViewDataDictionary(vc.ViewData), + ClientValidationEnabled = vc.ClientValidationEnabled, + ExecutingFilePath = vc.ExecutingFilePath, + ValidationMessageElement = vc.ValidationMessageElement, + Html5DateRenderingMode = vc.Html5DateRenderingMode, + ValidationSummaryMessageElement = vc.ValidationSummaryMessageElement + }; + } + + //public static ViewContext CloneWithWriter(this ViewContext vc, TextWriter writer) + //{ + // return new ViewContext + // { + // Controller = vc.Controller, + // HttpContext = vc.HttpContext, + // RequestContext = vc.RequestContext, + // RouteData = vc.RouteData, + // TempData = vc.TempData, + // View = vc.View, + // ViewData = vc.ViewData, + // FormContext = vc.FormContext, + // ClientValidationEnabled = vc.ClientValidationEnabled, + // UnobtrusiveJavaScriptEnabled = vc.UnobtrusiveJavaScriptEnabled, + // Writer = writer + // }; + //} + } +} diff --git a/src/Umbraco.Web.Common/Filters/UmbracoAuthorizeAttribute.cs b/src/Umbraco.Web.Common/Filters/UmbracoBackOfficeAuthorizeAttribute.cs similarity index 66% rename from src/Umbraco.Web.Common/Filters/UmbracoAuthorizeAttribute.cs rename to src/Umbraco.Web.Common/Filters/UmbracoBackOfficeAuthorizeAttribute.cs index 8a7c7b04d5..1f4abbaa25 100644 --- a/src/Umbraco.Web.Common/Filters/UmbracoAuthorizeAttribute.cs +++ b/src/Umbraco.Web.Common/Filters/UmbracoBackOfficeAuthorizeAttribute.cs @@ -5,12 +5,12 @@ namespace Umbraco.Web.Common.Filters /// /// Ensures authorization is successful for a back office user. /// - public class UmbracoAuthorizeAttribute : TypeFilterAttribute + public class UmbracoBackOfficeAuthorizeAttribute : TypeFilterAttribute { /// /// Default constructor /// - public UmbracoAuthorizeAttribute() : this(false, false) + public UmbracoBackOfficeAuthorizeAttribute() : this(false, false) { } @@ -20,7 +20,7 @@ namespace Umbraco.Web.Common.Filters /// /// - public UmbracoAuthorizeAttribute(bool redirectToUmbracoLogin, bool requireApproval) : base(typeof(UmbracoAuthorizeFilter)) + public UmbracoBackOfficeAuthorizeAttribute(bool redirectToUmbracoLogin, bool requireApproval) : base(typeof(UmbracoBackOfficeAuthorizeFilter)) { Arguments = new object[] { redirectToUmbracoLogin, requireApproval }; } @@ -29,7 +29,7 @@ namespace Umbraco.Web.Common.Filters /// Constructor with redirect url behavior /// /// - public UmbracoAuthorizeAttribute(string redirectUrl) : base(typeof(UmbracoAuthorizeFilter)) + public UmbracoBackOfficeAuthorizeAttribute(string redirectUrl) : base(typeof(UmbracoBackOfficeAuthorizeFilter)) { Arguments = new object[] { redirectUrl }; } diff --git a/src/Umbraco.Web.Common/Filters/UmbracoAuthorizeFilter.cs b/src/Umbraco.Web.Common/Filters/UmbracoBackOfficeAuthorizeFilter.cs similarity index 94% rename from src/Umbraco.Web.Common/Filters/UmbracoAuthorizeFilter.cs rename to src/Umbraco.Web.Common/Filters/UmbracoBackOfficeAuthorizeFilter.cs index 66b1462ae9..e7889cd1a8 100644 --- a/src/Umbraco.Web.Common/Filters/UmbracoAuthorizeFilter.cs +++ b/src/Umbraco.Web.Common/Filters/UmbracoBackOfficeAuthorizeFilter.cs @@ -13,7 +13,7 @@ namespace Umbraco.Web.Common.Filters /// /// Ensures authorization is successful for a back office user. /// - public class UmbracoAuthorizeFilter : IAuthorizationFilter + public class UmbracoBackOfficeAuthorizeFilter : IAuthorizationFilter { private readonly bool _requireApproval; @@ -28,7 +28,7 @@ namespace Umbraco.Web.Common.Filters private readonly bool _redirectToUmbracoLogin; private string _redirectUrl; - private UmbracoAuthorizeFilter( + private UmbracoBackOfficeAuthorizeFilter( IHostingEnvironment hostingEnvironment, IUmbracoContextAccessor umbracoContext, IRuntimeState runtimeState, LinkGenerator linkGenerator, @@ -51,7 +51,7 @@ namespace Umbraco.Web.Common.Filters /// /// /// - public UmbracoAuthorizeFilter( + public UmbracoBackOfficeAuthorizeFilter( IHostingEnvironment hostingEnvironment, IUmbracoContextAccessor umbracoContext, IRuntimeState runtimeState, LinkGenerator linkGenerator, @@ -59,7 +59,7 @@ namespace Umbraco.Web.Common.Filters { } - public UmbracoAuthorizeFilter( + public UmbracoBackOfficeAuthorizeFilter( IHostingEnvironment hostingEnvironment, IUmbracoContextAccessor umbracoContext, IRuntimeState runtimeState, LinkGenerator linkGenerator, diff --git a/src/Umbraco.Web.Common/Filters/UmbracoMemberAuthorizeAttribute.cs b/src/Umbraco.Web.Common/Filters/UmbracoMemberAuthorizeAttribute.cs new file mode 100644 index 0000000000..cc6058121b --- /dev/null +++ b/src/Umbraco.Web.Common/Filters/UmbracoMemberAuthorizeAttribute.cs @@ -0,0 +1,20 @@ +using Microsoft.AspNetCore.Mvc; + +namespace Umbraco.Web.Common.Filters +{ + /// + /// Ensures authorization is successful for a website user (member). + /// + public class UmbracoMemberAuthorizeAttribute : TypeFilterAttribute + { + public UmbracoMemberAuthorizeAttribute() : this(string.Empty, string.Empty, string.Empty) + { + } + + public UmbracoMemberAuthorizeAttribute(string allowType, string allowGroup, string allowMembers) : base(typeof(UmbracoMemberAuthorizeFilter)) + { + Arguments = new object[] { allowType, allowGroup, allowMembers}; + } + + } +} diff --git a/src/Umbraco.Web.Common/Filters/UmbracoMemberAuthorizeFilter.cs b/src/Umbraco.Web.Common/Filters/UmbracoMemberAuthorizeFilter.cs new file mode 100644 index 0000000000..27c2922637 --- /dev/null +++ b/src/Umbraco.Web.Common/Filters/UmbracoMemberAuthorizeFilter.cs @@ -0,0 +1,69 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Filters; +using System.Collections.Generic; +using Umbraco.Core; +using Umbraco.Extensions; + +namespace Umbraco.Web.Common.Filters +{ + + /// + /// Ensures authorization is successful for a back office user. + /// + public class UmbracoMemberAuthorizeFilter : IAuthorizationFilter + { + /// + /// Comma delimited list of allowed member types + /// + public string AllowType { get; private set;} + + /// + /// Comma delimited list of allowed member groups + /// + public string AllowGroup { get; private set;} + + /// + /// Comma delimited list of allowed members + /// + public string AllowMembers { get; private set; } + + + private UmbracoMemberAuthorizeFilter( + string allowType, string allowGroup, string allowMembers) + { + AllowType = allowType; + AllowGroup = allowGroup; + AllowMembers = allowMembers; + } + + public void OnAuthorization(AuthorizationFilterContext context) + { + if (!IsAuthorized()) + { + context.HttpContext.SetReasonPhrase("Resource restricted: either member is not logged on or is not of a permitted type or group."); + context.Result = new ForbidResult(); + } + } + + private bool IsAuthorized() + { + if (AllowMembers.IsNullOrWhiteSpace()) + AllowMembers = ""; + if (AllowGroup.IsNullOrWhiteSpace()) + AllowGroup = ""; + if (AllowType.IsNullOrWhiteSpace()) + AllowType = ""; + + var members = new List(); + foreach (var s in AllowMembers.Split(',')) + { + if (int.TryParse(s, out var id)) + { + members.Add(id); + } + } + + return false;// TODO reintroduce when members are implemented: _memberHelper.IsMemberAuthorized(AllowType.Split(','), AllowGroup.Split(','), members); + } + } +} diff --git a/src/Umbraco.Web.Common/Filters/ValidateUmbracoFormRouteStringAttribute.cs b/src/Umbraco.Web.Common/Filters/ValidateUmbracoFormRouteStringAttribute.cs new file mode 100644 index 0000000000..45806b9d18 --- /dev/null +++ b/src/Umbraco.Web.Common/Filters/ValidateUmbracoFormRouteStringAttribute.cs @@ -0,0 +1,74 @@ +using System; +using Microsoft.AspNetCore.DataProtection; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Controllers; +using Microsoft.AspNetCore.Mvc.Filters; +using Umbraco.Core; +using Umbraco.Web.Common.Constants; +using Umbraco.Web.Common.Exceptions; +using Umbraco.Web.Common.Security; + +namespace Umbraco.Web.Common.Filters +{ + + /// + /// Attribute used to check that the request contains a valid Umbraco form request string. + /// + /// + /// Applying this attribute/filter to a or SurfaceController Action will ensure that the Action can only be executed + /// when it is routed to from within Umbraco, typically when rendering a form with BeginUmbracoForm. It will mean that the natural MVC route for this Action + /// will fail with a . + /// + public class ValidateUmbracoFormRouteStringAttribute : TypeFilterAttribute + { + + public ValidateUmbracoFormRouteStringAttribute() : base(typeof(ValidateUmbracoFormRouteStringFilter)) + { + Arguments = new object[] { }; + } + + internal class ValidateUmbracoFormRouteStringFilter: IAuthorizationFilter + { + private readonly IDataProtectionProvider _dataProtectionProvider; + + public ValidateUmbracoFormRouteStringFilter(IDataProtectionProvider dataProtectionProvider) + { + _dataProtectionProvider = dataProtectionProvider; + } + + public void OnAuthorization(AuthorizationFilterContext context) + { + if (context == null) throw new ArgumentNullException(nameof(context)); + + var ufprt = context.HttpContext.Request.Form["ufprt"]; + + if (context.ActionDescriptor is ControllerActionDescriptor controllerActionDescriptor) + { + ValidateRouteString(ufprt, controllerActionDescriptor.ControllerName, controllerActionDescriptor.ActionName, context.RouteData?.DataTokens["area"]?.ToString()); + } + + } + + public void ValidateRouteString(string ufprt, string currentController, string currentAction, string currentArea) + { + if (ufprt.IsNullOrWhiteSpace()) + { + throw new HttpUmbracoFormRouteStringException("The required request field \"ufprt\" is not present."); + } + + if (!EncryptionHelper.DecryptAndValidateEncryptedRouteString(_dataProtectionProvider, ufprt, out var additionalDataParts)) + { + throw new HttpUmbracoFormRouteStringException("The Umbraco form request route string could not be decrypted."); + } + + if (!additionalDataParts[ViewConstants.ReservedAdditionalKeys.Controller].InvariantEquals(currentController) || + !additionalDataParts[ViewConstants.ReservedAdditionalKeys.Action].InvariantEquals(currentAction) || + (!additionalDataParts[ViewConstants.ReservedAdditionalKeys.Area].IsNullOrWhiteSpace() && !additionalDataParts[ViewConstants.ReservedAdditionalKeys.Area].InvariantEquals(currentArea))) + { + throw new HttpUmbracoFormRouteStringException("The provided Umbraco form request route string was meant for a different controller and action."); + } + + } + } + } +} diff --git a/src/Umbraco.Web/HtmlStringUtilities.cs b/src/Umbraco.Web.Common/Mvc/HtmlStringUtilities.cs similarity index 97% rename from src/Umbraco.Web/HtmlStringUtilities.cs rename to src/Umbraco.Web.Common/Mvc/HtmlStringUtilities.cs index cbeff72acf..204bb61425 100644 --- a/src/Umbraco.Web/HtmlStringUtilities.cs +++ b/src/Umbraco.Web.Common/Mvc/HtmlStringUtilities.cs @@ -5,8 +5,9 @@ using System.Linq; using System.Text; using System.Web; using HtmlAgilityPack; +using Microsoft.AspNetCore.Html; -namespace Umbraco.Web +namespace Umbraco.Web.Common.Mvc { /// /// Provides utility methods for UmbracoHelper for working with strings and HTML in views. @@ -20,7 +21,7 @@ namespace Umbraco.Web /// /// The HTML encoded text with text line breaks replaced with HTML line breaks (<br />). /// - public IHtmlString ReplaceLineBreaks(string text) + public IHtmlContent ReplaceLineBreaks(string text) { var value = HttpUtility.HtmlEncode(text)? .Replace("\r\n", "
") @@ -63,7 +64,7 @@ namespace Umbraco.Web return new HtmlString(doc.DocumentNode.FirstChild.InnerHtml.Replace(" ", " ")); } - internal string Join(string separator, params object[] args) + public string Join(string separator, params object[] args) { var results = args .Where(x => x != null) @@ -72,7 +73,7 @@ namespace Umbraco.Web return string.Join(separator, results); } - internal string Concatenate(params object[] args) + public string Concatenate(params object[] args) { var sb = new StringBuilder(); foreach (var arg in args @@ -85,7 +86,7 @@ namespace Umbraco.Web return sb.ToString(); } - internal string Coalesce(params object[] args) + public string Coalesce(params object[] args) { var arg = args .Where(x => x != null) @@ -95,7 +96,7 @@ namespace Umbraco.Web return arg ?? string.Empty; } - public IHtmlString Truncate(string html, int length, bool addElipsis, bool treatTagsAsContent) + public IHtmlContent Truncate(string html, int length, bool addElipsis, bool treatTagsAsContent) { const string hellip = "…"; diff --git a/src/Umbraco.Web.Common/Security/EncryptionHelper.cs b/src/Umbraco.Web.Common/Security/EncryptionHelper.cs new file mode 100644 index 0000000000..300afd530d --- /dev/null +++ b/src/Umbraco.Web.Common/Security/EncryptionHelper.cs @@ -0,0 +1,104 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Web; +using Microsoft.AspNetCore.DataProtection; +using Microsoft.Extensions.Logging; +using Umbraco.Core; +using Umbraco.Web.Common.Constants; + +namespace Umbraco.Web.Common.Security +{ + public class EncryptionHelper + { + private static IDataProtector CreateDataProtector(IDataProtectionProvider dataProtectionProvider) + { + return dataProtectionProvider.CreateProtector(nameof(EncryptionHelper)); + } + + public static string Decrypt(string encryptedString, IDataProtectionProvider dataProtectionProvider) + { + return CreateDataProtector(dataProtectionProvider).Unprotect(encryptedString); + } + + public static string Encrypt(string plainString, IDataProtectionProvider dataProtectionProvider) + { + return CreateDataProtector(dataProtectionProvider).Protect(plainString); + } + + /// + /// This is used in methods like BeginUmbracoForm and SurfaceAction to generate an encrypted string which gets submitted in a request for which + /// Umbraco can decrypt during the routing process in order to delegate the request to a specific MVC Controller. + /// + /// + /// + /// + /// + /// + /// + public static string CreateEncryptedRouteString(IDataProtectionProvider dataProtectionProvider, string controllerName, string controllerAction, string area, object additionalRouteVals = null) + { + if (dataProtectionProvider == null) throw new ArgumentNullException(nameof(dataProtectionProvider)); + if (controllerName == null) throw new ArgumentNullException(nameof(controllerName)); + if (string.IsNullOrEmpty(controllerName)) throw new ArgumentException("Value can't be empty.", nameof(controllerName)); + if (controllerAction == null) throw new ArgumentNullException(nameof(controllerAction)); + if (string.IsNullOrEmpty(controllerAction)) throw new ArgumentException("Value can't be empty.", nameof(controllerAction)); + if (area == null) throw new ArgumentNullException(nameof(area)); + + //need to create a params string as Base64 to put into our hidden field to use during the routes + var surfaceRouteParams = $"{ViewConstants.ReservedAdditionalKeys.Controller}={WebUtility.UrlEncode(controllerName)}&{ViewConstants.ReservedAdditionalKeys.Action}={WebUtility.UrlEncode(controllerAction)}&{ViewConstants.ReservedAdditionalKeys.Area}={area}"; + + //checking if the additional route values is already a dictionary and convert to querystring + string additionalRouteValsAsQuery; + if (additionalRouteVals != null) + { + if (additionalRouteVals is Dictionary additionalRouteValsAsDictionary) + additionalRouteValsAsQuery = additionalRouteValsAsDictionary.ToQueryString(); + else + additionalRouteValsAsQuery = additionalRouteVals.ToDictionary().ToQueryString(); + } + else + additionalRouteValsAsQuery = null; + + if (additionalRouteValsAsQuery.IsNullOrWhiteSpace() == false) + surfaceRouteParams += "&" + additionalRouteValsAsQuery; + + return Encrypt(surfaceRouteParams, dataProtectionProvider); + } + + public static bool DecryptAndValidateEncryptedRouteString(IDataProtectionProvider dataProtectionProvider, string encryptedString, out IDictionary parts) + { + if (dataProtectionProvider == null) throw new ArgumentNullException(nameof(dataProtectionProvider)); + string decryptedString; + try + { + decryptedString = Decrypt(encryptedString, dataProtectionProvider); + } + catch (Exception) + { + StaticApplicationLogging.Logger.LogWarning("A value was detected in the ufprt parameter but Umbraco could not decrypt the string"); + parts = null; + return false; + } + var parsedQueryString = HttpUtility.ParseQueryString(decryptedString); + parts = new Dictionary(); + foreach (var key in parsedQueryString.AllKeys) + { + parts[key] = parsedQueryString[key]; + } + //validate all required keys exist + //the controller + if (parts.All(x => x.Key != ViewConstants.ReservedAdditionalKeys.Controller)) + return false; + //the action + if (parts.All(x => x.Key != ViewConstants.ReservedAdditionalKeys.Action)) + return false; + //the area + if (parts.All(x => x.Key != ViewConstants.ReservedAdditionalKeys.Area)) + return false; + + return true; + } + } +} diff --git a/src/Umbraco.Web.Website/ActionResults/RedirectToUmbracoPageResult.cs b/src/Umbraco.Web.Website/ActionResults/RedirectToUmbracoPageResult.cs index 4b400b35dd..93b3a5bb0d 100644 --- a/src/Umbraco.Web.Website/ActionResults/RedirectToUmbracoPageResult.cs +++ b/src/Umbraco.Web.Website/ActionResults/RedirectToUmbracoPageResult.cs @@ -18,7 +18,7 @@ namespace Umbraco.Web.Website.ActionResults public class RedirectToUmbracoPageResult : IActionResult { private IPublishedContent _publishedContent; - private readonly int _pageId; + private readonly Guid _key; private readonly QueryString _queryString; private readonly IPublishedUrlProvider _publishedUrlProvider; private readonly IUmbracoContextAccessor _umbracoContextAccessor; @@ -31,22 +31,20 @@ namespace Umbraco.Web.Website.ActionResults if (!string.IsNullOrWhiteSpace(_url)) return _url; if (PublishedContent is null) - throw new InvalidOperationException($"Cannot redirect, no entity was found for id {PageId}"); + throw new InvalidOperationException($"Cannot redirect, no entity was found for key {Key}"); var result = _publishedUrlProvider.GetUrl(PublishedContent.Id); if (result == "#") throw new InvalidOperationException( - $"Could not route to entity with id {PageId}, the NiceUrlProvider could not generate a URL"); + $"Could not route to entity with key {Key}, the NiceUrlProvider could not generate a URL"); _url = result; return _url; } } - - private int PageId => _pageId; - + public Guid Key => _key; private IPublishedContent PublishedContent { get @@ -54,7 +52,7 @@ namespace Umbraco.Web.Website.ActionResults if (!(_publishedContent is null)) return _publishedContent; //need to get the URL for the page - _publishedContent = _umbracoContextAccessor.GetRequiredUmbracoContext().Content.GetById(_pageId); + _publishedContent = _umbracoContextAccessor.GetRequiredUmbracoContext().Content.GetById(_key); return _publishedContent; } @@ -65,9 +63,9 @@ namespace Umbraco.Web.Website.ActionResults /// /// /// - public RedirectToUmbracoPageResult(int pageId, IPublishedUrlProvider publishedUrlProvider, IUmbracoContextAccessor umbracoContextAccessor) + public RedirectToUmbracoPageResult(Guid key, IPublishedUrlProvider publishedUrlProvider, IUmbracoContextAccessor umbracoContextAccessor) { - _pageId = pageId; + _key = key; _publishedUrlProvider = publishedUrlProvider; _umbracoContextAccessor = umbracoContextAccessor; } @@ -78,9 +76,9 @@ namespace Umbraco.Web.Website.ActionResults /// /// /// - public RedirectToUmbracoPageResult(int pageId, QueryString queryString, IPublishedUrlProvider publishedUrlProvider, IUmbracoContextAccessor umbracoContextAccessor) + public RedirectToUmbracoPageResult(Guid key, QueryString queryString, IPublishedUrlProvider publishedUrlProvider, IUmbracoContextAccessor umbracoContextAccessor) { - _pageId = pageId; + _key = key; _queryString = queryString; _publishedUrlProvider = publishedUrlProvider; _umbracoContextAccessor = umbracoContextAccessor; @@ -95,7 +93,7 @@ namespace Umbraco.Web.Website.ActionResults public RedirectToUmbracoPageResult(IPublishedContent publishedContent, IPublishedUrlProvider publishedUrlProvider, IUmbracoContextAccessor umbracoContextAccessor) { _publishedContent = publishedContent; - _pageId = publishedContent.Id; + _key = publishedContent.Key; _publishedUrlProvider = publishedUrlProvider; _umbracoContextAccessor = umbracoContextAccessor; } @@ -110,7 +108,7 @@ namespace Umbraco.Web.Website.ActionResults public RedirectToUmbracoPageResult(IPublishedContent publishedContent, QueryString queryString, IPublishedUrlProvider publishedUrlProvider, IUmbracoContextAccessor umbracoContextAccessor) { _publishedContent = publishedContent; - _pageId = publishedContent.Id; + _key = publishedContent.Key; _queryString = queryString; _publishedUrlProvider = publishedUrlProvider; _umbracoContextAccessor = umbracoContextAccessor; diff --git a/src/Umbraco.Web/Mvc/SurfaceControllerTypeCollection.cs b/src/Umbraco.Web.Website/Collections/SurfaceControllerTypeCollection.cs similarity index 87% rename from src/Umbraco.Web/Mvc/SurfaceControllerTypeCollection.cs rename to src/Umbraco.Web.Website/Collections/SurfaceControllerTypeCollection.cs index 59b8adc950..fa888dfe88 100644 --- a/src/Umbraco.Web/Mvc/SurfaceControllerTypeCollection.cs +++ b/src/Umbraco.Web.Website/Collections/SurfaceControllerTypeCollection.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using Umbraco.Core.Composing; -namespace Umbraco.Web.Mvc +namespace Umbraco.Web.Website.Collections { public class SurfaceControllerTypeCollection : BuilderCollectionBase { diff --git a/src/Umbraco.Web/Mvc/SurfaceControllerTypeCollectionBuilder.cs b/src/Umbraco.Web.Website/Collections/SurfaceControllerTypeCollectionBuilder.cs similarity index 79% rename from src/Umbraco.Web/Mvc/SurfaceControllerTypeCollectionBuilder.cs rename to src/Umbraco.Web.Website/Collections/SurfaceControllerTypeCollectionBuilder.cs index 03de95c798..892184632d 100644 --- a/src/Umbraco.Web/Mvc/SurfaceControllerTypeCollectionBuilder.cs +++ b/src/Umbraco.Web.Website/Collections/SurfaceControllerTypeCollectionBuilder.cs @@ -1,7 +1,7 @@ using Umbraco.Core.Composing; -using Umbraco.Web.WebApi; +using Umbraco.Web.Website.Controllers; -namespace Umbraco.Web.Mvc +namespace Umbraco.Web.Website.Collections { public class SurfaceControllerTypeCollectionBuilder : TypeCollectionBuilderBase { diff --git a/src/Umbraco.Web.Website/Controllers/SurfaceController.cs b/src/Umbraco.Web.Website/Controllers/SurfaceController.cs index 726ce4ab82..8125923ee4 100644 --- a/src/Umbraco.Web.Website/Controllers/SurfaceController.cs +++ b/src/Umbraco.Web.Website/Controllers/SurfaceController.cs @@ -48,22 +48,22 @@ namespace Umbraco.Web.Website.Controllers /// /// Redirects to the Umbraco page with the given id /// - /// + /// /// - protected RedirectToUmbracoPageResult RedirectToUmbracoPage(int pageId) + protected RedirectToUmbracoPageResult RedirectToUmbracoPage(Guid contentKey) { - return new RedirectToUmbracoPageResult(pageId, _publishedUrlProvider, UmbracoContextAccessor); + return new RedirectToUmbracoPageResult(contentKey, _publishedUrlProvider, UmbracoContextAccessor); } /// /// Redirects to the Umbraco page with the given id and passes provided querystring /// - /// + /// /// /// - protected RedirectToUmbracoPageResult RedirectToUmbracoPage(int pageId, QueryString queryString) + protected RedirectToUmbracoPageResult RedirectToUmbracoPage(Guid contentKey, QueryString queryString) { - return new RedirectToUmbracoPageResult(pageId, queryString, _publishedUrlProvider, UmbracoContextAccessor); + return new RedirectToUmbracoPageResult(contentKey, queryString, _publishedUrlProvider, UmbracoContextAccessor); } /// diff --git a/src/Umbraco.Web.Website/Controllers/UmbracoAuthorizedController.cs b/src/Umbraco.Web.Website/Controllers/UmbracoAuthorizedController.cs index 2b5d7a61da..b2611848df 100644 --- a/src/Umbraco.Web.Website/Controllers/UmbracoAuthorizedController.cs +++ b/src/Umbraco.Web.Website/Controllers/UmbracoAuthorizedController.cs @@ -9,7 +9,7 @@ namespace Umbraco.Web.Mvc /// This controller essentially just uses a global UmbracoAuthorizeAttribute, inheritors that require more granular control over the /// authorization of each method can use this attribute instead of inheriting from this controller. /// - [UmbracoAuthorize] + [UmbracoBackOfficeAuthorize] [DisableBrowserCache] public abstract class UmbracoAuthorizedController : UmbracoController { diff --git a/src/Umbraco.Web.Website/Extensions/HtmlContentExtensions.cs b/src/Umbraco.Web.Website/Extensions/HtmlContentExtensions.cs new file mode 100644 index 0000000000..3b74c39475 --- /dev/null +++ b/src/Umbraco.Web.Website/Extensions/HtmlContentExtensions.cs @@ -0,0 +1,17 @@ +using System.Text.Encodings.Web; +using Microsoft.AspNetCore.Html; + +namespace Umbraco.Extensions +{ + public static class HtmlContentExtensions + { + public static string ToHtmlString(this IHtmlContent content) + { + using (var writer = new System.IO.StringWriter()) + { + content.WriteTo(writer, HtmlEncoder.Default); + return writer.ToString(); + } + } + } +} diff --git a/src/Umbraco.Web/HtmlHelperRenderExtensions.cs b/src/Umbraco.Web.Website/Extensions/HtmlHelperRenderExtensions.cs similarity index 79% rename from src/Umbraco.Web/HtmlHelperRenderExtensions.cs rename to src/Umbraco.Web.Website/Extensions/HtmlHelperRenderExtensions.cs index eccbe073cb..a48ed435bf 100644 --- a/src/Umbraco.Web/HtmlHelperRenderExtensions.cs +++ b/src/Umbraco.Web.Website/Extensions/HtmlHelperRenderExtensions.cs @@ -3,35 +3,54 @@ using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; +using System.Text.Encodings.Web; using System.Web; -using System.Web.Helpers; -using System.Web.Mvc; -using System.Web.Mvc.Html; -using System.Web.Routing; +using Microsoft.AspNetCore.Antiforgery; +using Microsoft.AspNetCore.DataProtection; +using Microsoft.AspNetCore.Html; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.DependencyInjection; using Umbraco.Core; -using Umbraco.Core.Configuration; +using Umbraco.Core.Cache; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Configuration.UmbracoSettings; +using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Web.Mvc; -using Umbraco.Web.Security; -using Current = Umbraco.Web.Composing.Current; +using Umbraco.Core.Logging; +using Umbraco.Web; +using Umbraco.Web.Common.Controllers; +using Umbraco.Web.Common.Mvc; +using Umbraco.Web.Common.Security; +using Umbraco.Web.Website.Collections; +using Umbraco.Web.Website.Controllers; -namespace Umbraco.Web +namespace Umbraco.Extensions { /// /// HtmlHelper extensions for use in templates /// public static class HtmlHelperRenderExtensions { + private static T GetRequiredService(IHtmlHelper htmlHelper) + { + return GetRequiredService(htmlHelper.ViewContext); + } + + private static T GetRequiredService(ViewContext viewContext) + { + return viewContext.HttpContext.RequestServices.GetRequiredService(); + } + /// /// Renders the markup for the profiler /// /// /// - public static IHtmlString RenderProfiler(this HtmlHelper helper) + public static IHtmlContent RenderProfiler(this IHtmlHelper helper) { - return new HtmlString(Current.ProfilerHtml.Render()); + return new HtmlString(GetRequiredService(helper).Render()); } /// @@ -43,7 +62,7 @@ namespace Umbraco.Web /// /// /// - public static MvcHtmlString AreaPartial(this HtmlHelper helper, string partial, string area, object model = null, ViewDataDictionary viewData = null) + public static IHtmlContent AreaPartial(this IHtmlHelper helper, string partial, string area, object model = null, ViewDataDictionary viewData = null) { var originalArea = helper.ViewContext.RouteData.DataTokens["area"]; helper.ViewContext.RouteData.DataTokens["area"] = area; @@ -61,23 +80,24 @@ namespace Umbraco.Web /// /// See: http://issues.umbraco.org/issue/U4-1614 /// - public static MvcHtmlString PreviewBadge(this HtmlHelper helper, IHttpContextAccessor httpContextAccessor, GlobalSettings globalSettings, IIOHelper ioHelper, ContentSettings contentSettings) + public static IHtmlContent PreviewBadge(this IHtmlHelper helper, IUmbracoContextAccessor umbracoContextAccessor, IHttpContextAccessor httpContextAccessor, GlobalSettings globalSettings, IIOHelper ioHelper, ContentSettings contentSettings) { - if (Current.UmbracoContext.InPreviewMode) + var umbrcoContext = umbracoContextAccessor.UmbracoContext; + if (umbrcoContext.InPreviewMode) { var htmlBadge = String.Format(contentSettings.PreviewBadge, ioHelper.ResolveUrl(globalSettings.UmbracoPath), WebUtility.UrlEncode(httpContextAccessor.GetRequiredHttpContext().Request.Path), - Current.UmbracoContext.PublishedRequest.PublishedContent.Id); - return new MvcHtmlString(htmlBadge); + umbrcoContext.PublishedRequest.PublishedContent.Id); + return new HtmlString(htmlBadge); } - return new MvcHtmlString(""); + return new HtmlString(""); } - public static IHtmlString CachedPartial( - this HtmlHelper htmlHelper, + public static IHtmlContent CachedPartial( + this IHtmlHelper htmlHelper, string partialViewName, object model, int cachedSeconds, @@ -95,36 +115,50 @@ namespace Umbraco.Web } if (cacheByPage) { - if (Current.UmbracoContext == null) + var umbracoContextAccessor = GetRequiredService(htmlHelper); + var umbracoContext = umbracoContextAccessor.UmbracoContext; + if (umbracoContext == null) { throw new InvalidOperationException("Cannot cache by page if the UmbracoContext has not been initialized, this parameter can only be used in the context of an Umbraco request"); } - cacheKey.AppendFormat("{0}-", Current.UmbracoContext.PublishedRequest?.PublishedContent?.Id ?? 0); + cacheKey.AppendFormat("{0}-", umbracoContext.PublishedRequest?.PublishedContent?.Id ?? 0); } if (cacheByMember) { - var helper = Current.MembershipHelper; - var currentMember = helper.GetCurrentMember(); - cacheKey.AppendFormat("m{0}-", currentMember?.Id ?? 0); + //TODO reintroduce when members are migrated + throw new NotImplementedException("Reintroduce when members are migrated"); + // var helper = Current.MembershipHelper; + // var currentMember = helper.GetCurrentMember(); + // cacheKey.AppendFormat("m{0}-", currentMember?.Id ?? 0); } if (contextualKeyBuilder != null) { var contextualKey = contextualKeyBuilder(model, viewData); cacheKey.AppendFormat("c{0}-", contextualKey); } - return Current.AppCaches.CachedPartialView(Current.HostingEnvironment, htmlHelper, partialViewName, model, cachedSeconds, cacheKey.ToString(), viewData); + + var appCaches = GetRequiredService(htmlHelper); + var hostingEnvironment = GetRequiredService(htmlHelper); + + return appCaches.CachedPartialView(hostingEnvironment, htmlHelper, partialViewName, model, cachedSeconds, cacheKey.ToString(), viewData); } - public static MvcHtmlString EditorFor(this HtmlHelper htmlHelper, string templateName = "", string htmlFieldName = "", object additionalViewData = null) - where T : new() - { - var model = new T(); - var typedHelper = new HtmlHelper( - htmlHelper.ViewContext.CopyWithModel(model), - htmlHelper.ViewDataContainer.CopyWithModel(model)); - - return typedHelper.EditorFor(x => model, templateName, htmlFieldName, additionalViewData); - } + // public static IHtmlContent EditorFor(this IHtmlHelper htmlHelper, string templateName = "", string htmlFieldName = "", object additionalViewData = null) + // where T : new() + // { + // var model = new T(); + // htmlHelper.Contextualize(htmlHelper.ViewContext.CopyWithModel(model)); + // + // // + // // var typedHelper = new HtmlHelper(htmlHelper. + // // htmlHelper. + // // , + // // htmlHelper.ViewDataContainer.CopyWithModel(model)); + // + // + // + // return htmlHelper.EditorForModel(x => model, templateName, htmlFieldName, additionalViewData); + // } /// /// A validation summary that lets you pass in a prefix so that the summary only displays for elements @@ -136,72 +170,95 @@ namespace Umbraco.Web /// /// /// - public static MvcHtmlString ValidationSummary(this HtmlHelper htmlHelper, - string prefix = "", - bool excludePropertyErrors = false, - string message = "", - IDictionary htmlAttributes = null) + public static IHtmlContent ValidationSummary(this IHtmlHelper htmlHelper, + string prefix = "", + bool excludePropertyErrors = false, + string message = "", + object htmlAttributes = null) { if (prefix.IsNullOrWhiteSpace()) { return htmlHelper.ValidationSummary(excludePropertyErrors, message, htmlAttributes); } - //if there's a prefix applied, we need to create a new HTML helper with a filtered ModelState collection so that it only looks for - //specific model state with the prefix. - var filteredHtmlHelper = new HtmlHelper(htmlHelper.ViewContext, htmlHelper.ViewDataContainer.FilterContainer(prefix)); - return filteredHtmlHelper.ValidationSummary(excludePropertyErrors, message, htmlAttributes); - } - /// - /// Returns the result of a child action of a strongly typed SurfaceController - /// - /// - /// - /// - /// - public static IHtmlString Action(this HtmlHelper htmlHelper, string actionName) - where T : SurfaceController - { - return htmlHelper.Action(actionName, typeof(T)); - } - /// - /// Returns the result of a child action of a SurfaceController - /// - /// - /// - /// - /// - /// - public static IHtmlString Action(this HtmlHelper htmlHelper, string actionName, Type surfaceType) - { - if (actionName == null) throw new ArgumentNullException(nameof(actionName)); - if (string.IsNullOrWhiteSpace(actionName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(actionName)); - if (surfaceType == null) throw new ArgumentNullException(nameof(surfaceType)); - var routeVals = new RouteValueDictionary(new {area = ""}); + var htmlGenerator = GetRequiredService(htmlHelper); - var surfaceController = Current.SurfaceControllerTypes.SingleOrDefault(x => x == surfaceType); - if (surfaceController == null) - throw new InvalidOperationException("Could not find the surface controller of type " + surfaceType.FullName); - var metaData = PluginController.GetMetadata(surfaceController); - if (!metaData.AreaName.IsNullOrWhiteSpace()) + var viewContext = htmlHelper.ViewContext.Clone(); + foreach (var key in viewContext.ViewData.Keys.ToArray()){ + if(!key.StartsWith(prefix)){ + viewContext.ViewData.Remove(key); + } + } + var tagBuilder = htmlGenerator.GenerateValidationSummary( + viewContext, + excludePropertyErrors, + message, + headerTag: null, + htmlAttributes: htmlAttributes); + if (tagBuilder == null) { - //set the area to the plugin area - if (routeVals.ContainsKey("area")) - { - routeVals["area"] = metaData.AreaName; - } - else - { - routeVals.Add("area", metaData.AreaName); - } + return HtmlString.Empty; } - return htmlHelper.Action(actionName, metaData.ControllerName, routeVals); + return tagBuilder; } +// TODO what to do here? This will be view components right? + // /// + // /// Returns the result of a child action of a strongly typed SurfaceController + // /// + // /// + // /// + // /// + // /// + // public static IHtmlContent Action(this HtmlHelper htmlHelper, string actionName) + // where T : SurfaceController + // { + // return htmlHelper.Action(actionName, typeof(T)); + // } + // + +// TODO what to do here? This will be view components right? + // /// + // /// Returns the result of a child action of a SurfaceController + // /// + // /// + // /// + // /// + // /// + // /// + // public static IHtmlContent Action(this IHtmlHelper htmlHelper, string actionName, Type surfaceType) + // { + // if (actionName == null) throw new ArgumentNullException(nameof(actionName)); + // if (string.IsNullOrWhiteSpace(actionName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(actionName)); + // if (surfaceType == null) throw new ArgumentNullException(nameof(surfaceType)); + // + // var routeVals = new RouteValueDictionary(new {area = ""}); + // + // var surfaceControllerTypeCollection = GetRequiredService(htmlHelper); + // var surfaceController = surfaceControllerTypeCollection.SingleOrDefault(x => x == surfaceType); + // if (surfaceController == null) + // throw new InvalidOperationException("Could not find the surface controller of type " + surfaceType.FullName); + // var metaData = PluginController.GetMetadata(surfaceController); + // if (!metaData.AreaName.IsNullOrWhiteSpace()) + // { + // //set the area to the plugin area + // if (routeVals.ContainsKey("area")) + // { + // routeVals["area"] = metaData.AreaName; + // } + // else + // { + // routeVals.Add("area", metaData.AreaName); + // } + // } + // + // return htmlHelper.Action(actionName, metaData.ControllerName, routeVals); + // } + #region BeginUmbracoForm /// @@ -213,6 +270,7 @@ namespace Umbraco.Web /// Creates an UmbracoForm /// /// + /// /// /// /// @@ -220,17 +278,18 @@ namespace Umbraco.Web /// public UmbracoForm( ViewContext viewContext, + HtmlEncoder htmlEncoder, string controllerName, string controllerAction, string area, FormMethod method, object additionalRouteVals = null) - : base(viewContext) + : base(viewContext, htmlEncoder) { _viewContext = viewContext; _method = method; _controllerName = controllerName; - _encryptedString = UrlHelperRenderExtensions.CreateEncryptedRouteString(controllerName, controllerAction, area, additionalRouteVals); + _encryptedString = EncryptionHelper.CreateEncryptedRouteString(GetRequiredService(viewContext), controllerName, controllerAction, area, additionalRouteVals); } @@ -240,7 +299,7 @@ namespace Umbraco.Web private readonly string _encryptedString; private readonly string _controllerName; - protected override void Dispose(bool disposing) + protected new void Dispose() { if (this._disposed) return; @@ -252,13 +311,14 @@ namespace Umbraco.Web || _controllerName == "UmbLoginStatus" || _controllerName == "UmbLogin") { - _viewContext.Writer.Write(AntiForgery.GetHtml().ToString()); + var antiforgery = _viewContext.HttpContext.RequestServices.GetRequiredService(); + _viewContext.Writer.Write(antiforgery.GetHtml(_viewContext.HttpContext).ToString()); } //write out the hidden surface form routes _viewContext.Writer.Write(""); - base.Dispose(disposing); + base.Dispose(); } } @@ -594,7 +654,8 @@ namespace Umbraco.Web var area = ""; - var surfaceController = Current.SurfaceControllerTypes.SingleOrDefault(x => x == surfaceType); + var surfaceControllerTypeCollection = GetRequiredService(html); + var surfaceController = surfaceControllerTypeCollection.SingleOrDefault(x => x == surfaceType); if (surfaceController == null) throw new InvalidOperationException("Could not find the surface controller of type " + surfaceType.FullName); var metaData = PluginController.GetMetadata(surfaceController); @@ -706,7 +767,8 @@ namespace Umbraco.Web if (controllerName == null) throw new ArgumentNullException(nameof(controllerName)); if (string.IsNullOrWhiteSpace(controllerName)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(controllerName)); - var formAction = Current.UmbracoContext.OriginalRequestUrl.PathAndQuery; + var umbracoContextAccessor = GetRequiredService(html); + var formAction = umbracoContextAccessor.UmbracoContext.OriginalRequestUrl.PathAndQuery; return html.RenderForm(formAction, method, htmlAttributes, controllerName, action, area, additionalRouteVals); } @@ -764,89 +826,28 @@ namespace Umbraco.Web tagBuilder.MergeAttribute("action", formAction); // method is an explicit parameter, so it takes precedence over the htmlAttributes. tagBuilder.MergeAttribute("method", HtmlHelper.GetFormMethodString(method), true); - var traditionalJavascriptEnabled = htmlHelper.ViewContext.ClientValidationEnabled && htmlHelper.ViewContext.UnobtrusiveJavaScriptEnabled == false; + var traditionalJavascriptEnabled = htmlHelper.ViewContext.ClientValidationEnabled; if (traditionalJavascriptEnabled) { // forms must have an ID for client validation - tagBuilder.GenerateId("form" + Guid.NewGuid().ToString("N")); + tagBuilder.GenerateId("form" + Guid.NewGuid().ToString("N"), string.Empty); } - htmlHelper.ViewContext.Writer.Write(tagBuilder.ToString(TagRenderMode.StartTag)); + htmlHelper.ViewContext.Writer.Write(tagBuilder.RenderStartTag()); + + var htmlEncoder = GetRequiredService(htmlHelper); //new UmbracoForm: - var theForm = new UmbracoForm(htmlHelper.ViewContext, surfaceController, surfaceAction, area, method, additionalRouteVals); + var theForm = new UmbracoForm(htmlHelper.ViewContext, htmlEncoder, surfaceController, surfaceAction, area, method, additionalRouteVals); if (traditionalJavascriptEnabled) { - htmlHelper.ViewContext.FormContext.FormId = tagBuilder.Attributes["id"]; + htmlHelper.ViewContext.FormContext.FormData["FormId"] = tagBuilder.Attributes["id"]; } return theForm; } #endregion - #region Wrap - - public static HtmlTagWrapper Wrap(this HtmlHelper html, string tag, string innerText, params IHtmlTagWrapper[] children) - { - var item = html.Wrap(tag, innerText, (object)null); - foreach (var child in children) - { - item.AddChild(child); - } - return item; - } - - public static HtmlTagWrapper Wrap(this HtmlHelper html, string tag, object inner, object anonymousAttributes, params IHtmlTagWrapper[] children) - { - string innerText = null; - if (inner != null) - { - innerText = string.Format("{0}", inner); - } - var item = html.Wrap(tag, innerText, anonymousAttributes); - foreach (var child in children) - { - item.AddChild(child); - } - return item; - } - public static HtmlTagWrapper Wrap(this HtmlHelper html, string tag, object inner) - { - string innerText = null; - if (inner != null) - { - innerText = string.Format("{0}", inner); - } - return html.Wrap(tag, innerText, (object)null); - } - - public static HtmlTagWrapper Wrap(this HtmlHelper html, string tag, string innerText, object anonymousAttributes, params IHtmlTagWrapper[] children) - { - var wrap = new HtmlTagWrapper(tag); - if (anonymousAttributes != null) - { - wrap.ReflectAttributesFromAnonymousType(anonymousAttributes); - } - if (!string.IsNullOrWhiteSpace(innerText)) - { - wrap.AddChild(new HtmlTagWrapperTextNode(innerText)); - } - foreach (var child in children) - { - wrap.AddChild(child); - } - return wrap; - } - - public static HtmlTagWrapper Wrap(this HtmlHelper html, bool visible, string tag, string innerText, object anonymousAttributes, params IHtmlTagWrapper[] children) - { - var item = html.Wrap(tag, innerText, anonymousAttributes, children); - item.Visible = visible; - return item; - } - - #endregion - #region If /// @@ -858,7 +859,7 @@ namespace Umbraco.Web /// /// The HTML encoded value. /// - public static IHtmlString If(this HtmlHelper html, bool test, string valueIfTrue) + public static IHtmlContent If(this HtmlHelper html, bool test, string valueIfTrue) { return If(html, test, valueIfTrue, string.Empty); } @@ -873,7 +874,7 @@ namespace Umbraco.Web /// /// The HTML encoded value. /// - public static IHtmlString If(this HtmlHelper html, bool test, string valueIfTrue, string valueIfFalse) + public static IHtmlContent If(this HtmlHelper html, bool test, string valueIfTrue, string valueIfFalse) { return new HtmlString(HttpUtility.HtmlEncode(test ? valueIfTrue : valueIfFalse)); } @@ -892,7 +893,7 @@ namespace Umbraco.Web /// /// The HTML encoded text with text line breaks replaced with HTML line breaks (<br />). /// - public static IHtmlString ReplaceLineBreaks(this HtmlHelper helper, string text) + public static IHtmlContent ReplaceLineBreaks(this HtmlHelper helper, string text) { return StringUtilities.ReplaceLineBreaks(text); } @@ -912,15 +913,17 @@ namespace Umbraco.Web /// /// Strips all HTML tags from a given string, all contents of the tags will remain. /// - public static IHtmlString StripHtml(this HtmlHelper helper, IHtmlString html, params string[] tags) + public static IHtmlContent StripHtml(this HtmlHelper helper, IHtmlContent html, params string[] tags) { return helper.StripHtml(html.ToHtmlString(), tags); } + + /// /// Strips all HTML tags from a given string, all contents of the tags will remain. /// - public static IHtmlString StripHtml(this HtmlHelper helper, string html, params string[] tags) + public static IHtmlContent StripHtml(this HtmlHelper helper, string html, params string[] tags) { return StringUtilities.StripHtmlTags(html, tags); } @@ -952,7 +955,7 @@ namespace Umbraco.Web /// /// Truncates a string to a given length, can add a ellipsis at the end (...). Method checks for open HTML tags, and makes sure to close them /// - public static IHtmlString Truncate(this HtmlHelper helper, IHtmlString html, int length) + public static IHtmlContent Truncate(this HtmlHelper helper, IHtmlContent html, int length) { return helper.Truncate(html.ToHtmlString(), length, true, false); } @@ -960,7 +963,7 @@ namespace Umbraco.Web /// /// Truncates a string to a given length, can add a ellipsis at the end (...). Method checks for open HTML tags, and makes sure to close them /// - public static IHtmlString Truncate(this HtmlHelper helper, IHtmlString html, int length, bool addElipsis) + public static IHtmlContent Truncate(this HtmlHelper helper, IHtmlContent html, int length, bool addElipsis) { return helper.Truncate(html.ToHtmlString(), length, addElipsis, false); } @@ -968,7 +971,7 @@ namespace Umbraco.Web /// /// Truncates a string to a given length, can add a ellipsis at the end (...). Method checks for open HTML tags, and makes sure to close them /// - public static IHtmlString Truncate(this HtmlHelper helper, IHtmlString html, int length, bool addElipsis, bool treatTagsAsContent) + public static IHtmlContent Truncate(this HtmlHelper helper, IHtmlContent html, int length, bool addElipsis, bool treatTagsAsContent) { return helper.Truncate(html.ToHtmlString(), length, addElipsis, treatTagsAsContent); } @@ -976,7 +979,7 @@ namespace Umbraco.Web /// /// Truncates a string to a given length, can add a ellipsis at the end (...). Method checks for open HTML tags, and makes sure to close them /// - public static IHtmlString Truncate(this HtmlHelper helper, string html, int length) + public static IHtmlContent Truncate(this HtmlHelper helper, string html, int length) { return helper.Truncate(html, length, true, false); } @@ -984,7 +987,7 @@ namespace Umbraco.Web /// /// Truncates a string to a given length, can add a ellipsis at the end (...). Method checks for open HTML tags, and makes sure to close them /// - public static IHtmlString Truncate(this HtmlHelper helper, string html, int length, bool addElipsis) + public static IHtmlContent Truncate(this HtmlHelper helper, string html, int length, bool addElipsis) { return helper.Truncate(html, length, addElipsis, false); } @@ -992,7 +995,7 @@ namespace Umbraco.Web /// /// Truncates a string to a given length, can add a ellipsis at the end (...). Method checks for open HTML tags, and makes sure to close them /// - public static IHtmlString Truncate(this HtmlHelper helper, string html, int length, bool addElipsis, bool treatTagsAsContent) + public static IHtmlContent Truncate(this HtmlHelper helper, string html, int length, bool addElipsis, bool treatTagsAsContent) { return StringUtilities.Truncate(html, length, addElipsis, treatTagsAsContent); } @@ -1002,7 +1005,7 @@ namespace Umbraco.Web /// /// Truncates a string to a given amount of words, can add a ellipsis at the end (...). Method checks for open HTML tags, and makes sure to close them /// - public static IHtmlString TruncateByWords(this HtmlHelper helper, string html, int words) + public static IHtmlContent TruncateByWords(this HtmlHelper helper, string html, int words) { int length = StringUtilities.WordsToLength(html, words); @@ -1012,7 +1015,7 @@ namespace Umbraco.Web /// /// Truncates a string to a given amount of words, can add a ellipsis at the end (...). Method checks for open HTML tags, and makes sure to close them /// - public static IHtmlString TruncateByWords(this HtmlHelper helper, string html, int words, bool addElipsis) + public static IHtmlContent TruncateByWords(this HtmlHelper helper, string html, int words, bool addElipsis) { int length = StringUtilities.WordsToLength(html, words); @@ -1022,7 +1025,7 @@ namespace Umbraco.Web /// /// Truncates a string to a given amount of words, can add a ellipsis at the end (...). Method checks for open HTML tags, and makes sure to close them /// - public static IHtmlString TruncateByWords(this HtmlHelper helper, IHtmlString html, int words) + public static IHtmlContent TruncateByWords(this HtmlHelper helper, IHtmlContent html, int words) { int length = StringUtilities.WordsToLength(html.ToHtmlString(), words); @@ -1032,7 +1035,7 @@ namespace Umbraco.Web /// /// Truncates a string to a given amount of words, can add a ellipsis at the end (...). Method checks for open HTML tags, and makes sure to close them /// - public static IHtmlString TruncateByWords(this HtmlHelper helper, IHtmlString html, int words, bool addElipsis) + public static IHtmlContent TruncateByWords(this HtmlHelper helper, IHtmlContent html, int words, bool addElipsis) { int length = StringUtilities.WordsToLength(html.ToHtmlString(), words); diff --git a/src/Umbraco.Web.Website/Extensions/TypeLoaderExtensions.cs b/src/Umbraco.Web.Website/Extensions/TypeLoaderExtensions.cs new file mode 100644 index 0000000000..c01bdf7804 --- /dev/null +++ b/src/Umbraco.Web.Website/Extensions/TypeLoaderExtensions.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using Umbraco.Core.Composing; +using Umbraco.Web.Common.Controllers; +using Umbraco.Web.Website.Controllers; + + +namespace Umbraco.Extensions +{ + /// + /// Provides extension methods for the class. + /// + // Migrated to .NET Core + public static class TypeLoaderExtensions + { + /// + /// Gets all types implementing . + /// + internal static IEnumerable GetSurfaceControllers(this TypeLoader typeLoader) + => typeLoader.GetTypes(); + + /// + /// Gets all types implementing . + /// + internal static IEnumerable GetUmbracoApiControllers(this TypeLoader typeLoader) + => typeLoader.GetTypes(); + } +} diff --git a/src/Umbraco.Web.Website/Extensions/UmbracoWebstiteServiceCollectionExtensions.cs b/src/Umbraco.Web.Website/Extensions/UmbracoWebstiteServiceCollectionExtensions.cs index b47679a1bf..a5d729f20f 100644 --- a/src/Umbraco.Web.Website/Extensions/UmbracoWebstiteServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Website/Extensions/UmbracoWebstiteServiceCollectionExtensions.cs @@ -25,6 +25,8 @@ namespace Umbraco.Extensions // Wraps all existing view engines in a ProfilerViewEngine services.AddTransient, ProfilingViewEngineWrapperMvcViewOptionsSetup>(); + //TODO figure out if we need more to work on load balanced setups + services.AddDataProtection(); } } diff --git a/src/Umbraco.Web.Website/Runtime/WebsiteComposer.cs b/src/Umbraco.Web.Website/Runtime/WebsiteComposer.cs index 11204483bd..3cbb24b0e0 100644 --- a/src/Umbraco.Web.Website/Runtime/WebsiteComposer.cs +++ b/src/Umbraco.Web.Website/Runtime/WebsiteComposer.cs @@ -3,6 +3,7 @@ using Umbraco.Core.Composing; using Umbraco.Extensions; using Umbraco.Web.Website.Routing; using Umbraco.Web.Common.Runtime; +using Umbraco.Web.Website.Collections; namespace Umbraco.Web.Website.Runtime { @@ -19,6 +20,10 @@ namespace Umbraco.Web.Website.Runtime .ComposeWebsiteUmbracoControllers() //.SetDefaultRenderMvcController()// default controller for template views ; + + + composition.WithCollectionBuilder() + .Add(composition.TypeLoader.GetSurfaceControllers()); } } } diff --git a/src/Umbraco.Web.Website/UmbracoHelper.cs b/src/Umbraco.Web.Website/UmbracoHelper.cs new file mode 100644 index 0000000000..d44ca4e5fe --- /dev/null +++ b/src/Umbraco.Web.Website/UmbracoHelper.cs @@ -0,0 +1,445 @@ +using System; +using System.Collections.Generic; +using System.Xml.XPath; +using Umbraco.Core; +using Umbraco.Core.Dictionary; +using Umbraco.Core.Models.PublishedContent; +using Umbraco.Core.Templates; +using Umbraco.Core.Strings; +using Umbraco.Core.Xml; + +namespace Umbraco.Web.Website +{ + /// + /// A helper class that provides many useful methods and functionality for using Umbraco in templates + /// + /// + /// This object is a request based lifetime + /// + public class UmbracoHelper + { + private readonly IPublishedContentQuery _publishedContentQuery; + private readonly IUmbracoComponentRenderer _componentRenderer; + private readonly ICultureDictionaryFactory _cultureDictionaryFactory; + + private IPublishedContent _currentPage; + private ICultureDictionary _cultureDictionary; + + #region Constructors + + /// + /// Initializes a new instance of . + /// + /// The item assigned to the helper. + /// + /// + /// + /// Sets the current page to the context's published content request's content item. + public UmbracoHelper(IPublishedContent currentPage, + ICultureDictionaryFactory cultureDictionary, + IUmbracoComponentRenderer componentRenderer, + IPublishedContentQuery publishedContentQuery) + { + _cultureDictionaryFactory = cultureDictionary ?? throw new ArgumentNullException(nameof(cultureDictionary)); + _componentRenderer = componentRenderer ?? throw new ArgumentNullException(nameof(componentRenderer)); + _publishedContentQuery = publishedContentQuery ?? throw new ArgumentNullException(nameof(publishedContentQuery)); + _currentPage = currentPage; + } + + /// + /// Initializes a new empty instance of . + /// + /// For tests - nothing is initialized. + internal UmbracoHelper() + { } + + #endregion + + + /// + /// Gets (or sets) the current item assigned to the UmbracoHelper. + /// + /// + /// + /// Note that this is the assigned IPublishedContent item to the + /// UmbracoHelper, this is not necessarily the Current IPublishedContent + /// item being rendered that is assigned to the UmbracoContext. + /// This IPublishedContent object is contextual to the current UmbracoHelper instance. + /// + /// + /// In some cases accessing this property will throw an exception if + /// there is not IPublishedContent assigned to the Helper this will + /// only ever happen if the Helper is constructed via DI during a non front-end request. + /// + /// + /// Thrown if the + /// UmbracoHelper is constructed with an UmbracoContext and it is not a + /// front-end request. + public IPublishedContent AssignedContentItem + { + get + { + if (_currentPage != null) + { + return _currentPage; + } + + throw new InvalidOperationException( + $"Cannot return the {nameof(IPublishedContent)} because the {nameof(UmbracoHelper)} was not constructed with an {nameof(IPublishedContent)}." + ); + + } + set => _currentPage = value; + } + + /// + /// Renders the template for the specified pageId and an optional altTemplateId + /// + /// + /// If not specified, will use the template assigned to the node + /// + public IHtmlEncodedString RenderTemplate(int contentId, int? altTemplateId = null) + { + return _componentRenderer.RenderTemplate(contentId, altTemplateId); + } + + #region RenderMacro + + /// + /// Renders the macro with the specified alias. + /// + /// The alias. + /// + public IHtmlEncodedString RenderMacro(string alias) + { + return _componentRenderer.RenderMacro(AssignedContentItem?.Id ?? 0, alias, null); + } + + /// + /// Renders the macro with the specified alias, passing in the specified parameters. + /// + /// The alias. + /// The parameters. + /// + public IHtmlEncodedString RenderMacro(string alias, object parameters) + { + return _componentRenderer.RenderMacro(AssignedContentItem?.Id ?? 0, alias, parameters?.ToDictionary()); + } + + /// + /// Renders the macro with the specified alias, passing in the specified parameters. + /// + /// The alias. + /// The parameters. + /// + public IHtmlEncodedString RenderMacro(string alias, IDictionary parameters) + { + return _componentRenderer.RenderMacro(AssignedContentItem?.Id ?? 0, alias, parameters); + } + + #endregion + + #region Dictionary + + /// + /// Returns the dictionary value for the key specified + /// + /// + /// + public string GetDictionaryValue(string key) + { + return CultureDictionary[key]; + } + + /// + /// Returns the dictionary value for the key specified, and if empty returns the specified default fall back value + /// + /// key of dictionary item + /// fall back text if dictionary item is empty - Name altText to match Umbraco.Field + /// + public string GetDictionaryValue(string key, string altText) + { + var dictionaryValue = GetDictionaryValue(key); + if (String.IsNullOrWhiteSpace(dictionaryValue)) + { + dictionaryValue = altText; + } + return dictionaryValue; + } + + /// + /// Returns the ICultureDictionary for access to dictionary items + /// + public ICultureDictionary CultureDictionary => _cultureDictionary ??= _cultureDictionaryFactory.CreateDictionary(); + + #endregion + + + + #region Content + + /// + /// Gets a content item from the cache. + /// + /// The unique identifier, or the key, of the content item. + /// The content, or null of the content item is not in the cache. + public IPublishedContent Content(object id) + { + return ContentForObject(id); + } + + private IPublishedContent ContentForObject(object id) => _publishedContentQuery.Content(id); + + public IPublishedContent ContentSingleAtXPath(string xpath, params XPathVariable[] vars) + { + return _publishedContentQuery.ContentSingleAtXPath(xpath, vars); + } + + /// + /// Gets a content item from the cache. + /// + /// The unique identifier of the content item. + /// The content, or null of the content item is not in the cache. + public IPublishedContent Content(int id) => _publishedContentQuery.Content(id); + + /// + /// Gets a content item from the cache. + /// + /// The key of the content item. + /// The content, or null of the content item is not in the cache. + public IPublishedContent Content(Guid id) => _publishedContentQuery.Content(id); + + /// + /// Gets a content item from the cache. + /// + /// The unique identifier, or the key, of the content item. + /// The content, or null of the content item is not in the cache. + public IPublishedContent Content(string id) => _publishedContentQuery.Content(id); + + public IPublishedContent Content(Udi id) => _publishedContentQuery.Content(id); + + /// + /// Gets content items from the cache. + /// + /// The unique identifiers, or the keys, of the content items. + /// The content items that were found in the cache. + /// Does not support mixing identifiers and keys. + public IEnumerable Content(params object[] ids) => _publishedContentQuery.Content(ids); + + /// + /// Gets the contents corresponding to the identifiers. + /// + /// The content identifiers. + /// The existing contents corresponding to the identifiers. + /// If an identifier does not match an existing content, it will be missing in the returned value. + public IEnumerable Content(params Udi[] ids) => _publishedContentQuery.Content(ids); + + /// + /// Gets the contents corresponding to the identifiers. + /// + /// The content identifiers. + /// The existing contents corresponding to the identifiers. + /// If an identifier does not match an existing content, it will be missing in the returned value. + public IEnumerable Content(params GuidUdi[] ids) => _publishedContentQuery.Content(ids); + + private IEnumerable ContentForObjects(IEnumerable ids) => _publishedContentQuery.Content(ids); + + /// + /// Gets content items from the cache. + /// + /// The unique identifiers of the content items. + /// The content items that were found in the cache. + public IEnumerable Content(params int[] ids) => _publishedContentQuery.Content(ids); + + /// + /// Gets content items from the cache. + /// + /// The keys of the content items. + /// The content items that were found in the cache. + public IEnumerable Content(params Guid[] ids) => _publishedContentQuery.Content(ids); + + /// + /// Gets content items from the cache. + /// + /// The unique identifiers, or the keys, of the content items. + /// The content items that were found in the cache. + /// Does not support mixing identifiers and keys. + public IEnumerable Content(params string[] ids) => _publishedContentQuery.Content(ids); + + /// + /// Gets the contents corresponding to the identifiers. + /// + /// The content identifiers. + /// The existing contents corresponding to the identifiers. + /// If an identifier does not match an existing content, it will be missing in the returned value. + public IEnumerable Content(IEnumerable ids) => _publishedContentQuery.Content(ids); + + /// + /// Gets the contents corresponding to the identifiers. + /// + /// The content identifiers. + /// The existing contents corresponding to the identifiers. + /// If an identifier does not match an existing content, it will be missing in the returned value. + public IEnumerable Content(IEnumerable ids) => _publishedContentQuery.Content(ids); + + /// + /// Gets the contents corresponding to the identifiers. + /// + /// The content identifiers. + /// The existing contents corresponding to the identifiers. + /// If an identifier does not match an existing content, it will be missing in the returned value. + public IEnumerable Content(IEnumerable ids) => _publishedContentQuery.Content(ids); + + /// + /// Gets the contents corresponding to the identifiers. + /// + /// The content identifiers. + /// The existing contents corresponding to the identifiers. + /// If an identifier does not match an existing content, it will be missing in the returned value. + public IEnumerable Content(IEnumerable ids) => _publishedContentQuery.Content(ids); + + /// + /// Gets the contents corresponding to the identifiers. + /// + /// The content identifiers. + /// The existing contents corresponding to the identifiers. + /// If an identifier does not match an existing content, it will be missing in the returned value. + public IEnumerable Content(IEnumerable ids) => _publishedContentQuery.Content(ids); + + public IEnumerable ContentAtXPath(string xpath, params XPathVariable[] vars) + { + return _publishedContentQuery.ContentAtXPath(xpath, vars); + } + + public IEnumerable ContentAtXPath(XPathExpression xpath, params XPathVariable[] vars) + { + return _publishedContentQuery.ContentAtXPath(xpath, vars); + } + + public IEnumerable ContentAtRoot() + { + return _publishedContentQuery.ContentAtRoot(); + } + + + + + #endregion + #region Media + + public IPublishedContent Media(Udi id) => _publishedContentQuery.Media(id); + + public IPublishedContent Media(Guid id) => _publishedContentQuery.Media(id); + + /// + /// Overloaded method accepting an 'object' type + /// + /// + /// + /// + /// We accept an object type because GetPropertyValue now returns an 'object', we still want to allow people to pass + /// this result in to this method. + /// This method will throw an exception if the value is not of type int or string. + /// + public IPublishedContent Media(object id) + { + return MediaForObject(id); + } + + private IPublishedContent MediaForObject(object id) => _publishedContentQuery.Media(id); + + public IPublishedContent Media(int id) => _publishedContentQuery.Media(id); + + public IPublishedContent Media(string id) => _publishedContentQuery.Media(id); + + /// + /// Gets the medias corresponding to the identifiers. + /// + /// The media identifiers. + /// The existing medias corresponding to the identifiers. + /// If an identifier does not match an existing media, it will be missing in the returned value. + public IEnumerable Media(params object[] ids) => _publishedContentQuery.Media(ids); + + private IEnumerable MediaForObjects(IEnumerable ids) => _publishedContentQuery.Media(ids); + + /// + /// Gets the medias corresponding to the identifiers. + /// + /// The media identifiers. + /// The existing medias corresponding to the identifiers. + /// If an identifier does not match an existing media, it will be missing in the returned value. + public IEnumerable Media(params int[] ids) => _publishedContentQuery.Media(ids); + + /// + /// Gets the medias corresponding to the identifiers. + /// + /// The media identifiers. + /// The existing medias corresponding to the identifiers. + /// If an identifier does not match an existing media, it will be missing in the returned value. + public IEnumerable Media(params string[] ids) => _publishedContentQuery.Media(ids); + + + /// + /// Gets the medias corresponding to the identifiers. + /// + /// The media identifiers. + /// The existing medias corresponding to the identifiers. + /// If an identifier does not match an existing media, it will be missing in the returned value. + public IEnumerable Media(params Udi[] ids) => _publishedContentQuery.Media(ids); + + /// + /// Gets the medias corresponding to the identifiers. + /// + /// The media identifiers. + /// The existing medias corresponding to the identifiers. + /// If an identifier does not match an existing media, it will be missing in the returned value. + public IEnumerable Media(params GuidUdi[] ids) => _publishedContentQuery.Media(ids); + + /// + /// Gets the medias corresponding to the identifiers. + /// + /// The media identifiers. + /// The existing medias corresponding to the identifiers. + /// If an identifier does not match an existing media, it will be missing in the returned value. + public IEnumerable Media(IEnumerable ids) => _publishedContentQuery.Media(ids); + + /// + /// Gets the medias corresponding to the identifiers. + /// + /// The media identifiers. + /// The existing medias corresponding to the identifiers. + /// If an identifier does not match an existing media, it will be missing in the returned value. + public IEnumerable Media(IEnumerable ids) => _publishedContentQuery.Media(ids); + + /// + /// Gets the medias corresponding to the identifiers. + /// + /// The media identifiers. + /// The existing medias corresponding to the identifiers. + /// If an identifier does not match an existing media, it will be missing in the returned value. + public IEnumerable Media(IEnumerable ids) => _publishedContentQuery.Media(ids); + + /// + /// Gets the medias corresponding to the identifiers. + /// + /// The media identifiers. + /// The existing medias corresponding to the identifiers. + /// If an identifier does not match an existing media, it will be missing in the returned value. + public IEnumerable Media(IEnumerable ids) => _publishedContentQuery.Media(ids); + + /// + /// Gets the medias corresponding to the identifiers. + /// + /// The media identifiers. + /// The existing medias corresponding to the identifiers. + /// If an identifier does not match an existing media, it will be missing in the returned value. + public IEnumerable Media(IEnumerable ids) => _publishedContentQuery.Media(ids); + + public IEnumerable MediaAtRoot() + { + return _publishedContentQuery.MediaAtRoot(); + } + + #endregion + } +} diff --git a/src/Umbraco.Web/AreaRegistrationContextExtensions.cs b/src/Umbraco.Web/AreaRegistrationContextExtensions.cs deleted file mode 100644 index 1321d3722c..0000000000 --- a/src/Umbraco.Web/AreaRegistrationContextExtensions.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System.Web.Http; -using System.Web.Mvc; -using System.Web.Routing; - -namespace Umbraco.Web -{ - internal static class AreaRegistrationContextExtensions - { - public static Route MapHttpRoute(this AreaRegistrationContext context, string name, string url, object defaults, string[] namespaces) - { - var apiRoute = context.Routes.MapHttpRoute( - name, - url, - defaults); - - //web api routes don't set the data tokens object - if (apiRoute.DataTokens == null) - { - apiRoute.DataTokens = new RouteValueDictionary(); - } - apiRoute.DataTokens.Add("area", context.AreaName); - apiRoute.DataTokens.Add("Namespaces", namespaces); //look in this namespace to create the controller - apiRoute.DataTokens.Add("UseNamespaceFallback", false); //Don't look anywhere else except this namespace! - - return apiRoute; - } - } -} diff --git a/src/Umbraco.Web/Composing/Current.cs b/src/Umbraco.Web/Composing/Current.cs index 1d50154214..b1e13745d8 100644 --- a/src/Umbraco.Web/Composing/Current.cs +++ b/src/Umbraco.Web/Composing/Current.cs @@ -133,9 +133,6 @@ namespace Umbraco.Web.Composing internal static UmbracoApiControllerTypeCollection UmbracoApiControllerTypes => Factory.GetRequiredService(); - internal static SurfaceControllerTypeCollection SurfaceControllerTypes - => Factory.GetRequiredService(); - internal static IPublishedSnapshotService PublishedSnapshotService => Factory.GetRequiredService(); diff --git a/src/Umbraco.Web/Editors/BackOfficeController.cs b/src/Umbraco.Web/Editors/BackOfficeController.cs index 1f7203270f..668a5d6873 100644 --- a/src/Umbraco.Web/Editors/BackOfficeController.cs +++ b/src/Umbraco.Web/Editors/BackOfficeController.cs @@ -28,7 +28,7 @@ namespace Umbraco.Web.Editors /// Represents a controller user to render out the default back office view and JS results. /// [UmbracoRequireHttps] - [DisableBrowserCache] + // [DisableBrowserCache] public class BackOfficeController : Controller { private BackOfficeOwinUserManager _userManager; diff --git a/src/Umbraco.Web/Mvc/ActionExecutedEventArgs.cs b/src/Umbraco.Web/Mvc/ActionExecutedEventArgs.cs deleted file mode 100644 index 6904aa103a..0000000000 --- a/src/Umbraco.Web/Mvc/ActionExecutedEventArgs.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Web.Mvc; - -namespace Umbraco.Web.Mvc -{ - /// Migrated already to .Net Core - public class ActionExecutedEventArgs : EventArgs - { - public Controller Controller { get; set; } - public object Model { get; set; } - - public ActionExecutedEventArgs(Controller controller, object model) - { - Controller = controller; - Model = model; - } - } -} diff --git a/src/Umbraco.Web/Mvc/AdminTokenAuthorizeAttribute.cs b/src/Umbraco.Web/Mvc/AdminTokenAuthorizeAttribute.cs deleted file mode 100644 index 25a2f958f8..0000000000 --- a/src/Umbraco.Web/Mvc/AdminTokenAuthorizeAttribute.cs +++ /dev/null @@ -1,127 +0,0 @@ -using System; -using System.Net.Http.Headers; -using System.Text; -using System.Text.RegularExpressions; -using System.Web; -using System.Web.Mvc; -using Microsoft.Extensions.Logging; -using Umbraco.Core; -using Umbraco.Core.Services; -using Umbraco.Web.Composing; - -namespace Umbraco.Web.Mvc -{ - /// - /// Used for authorizing scheduled tasks - /// - public sealed class AdminTokenAuthorizeAttribute : AuthorizeAttribute - { - // see note in HttpInstallAuthorizeAttribute - private readonly IUserService _userService; - private readonly IRuntimeState _runtimeState; - private readonly ILogger _logger; - - private IUserService UserService => _userService ?? Current.Services.UserService; - - private IRuntimeState RuntimeState => _runtimeState ?? Current.RuntimeState; - - private ILogger Logger => _logger ?? Current.Logger; - - /// - /// THIS SHOULD BE ONLY USED FOR UNIT TESTS - /// - /// - /// - public AdminTokenAuthorizeAttribute(IUserService userService, IRuntimeState runtimeState) - { - if (userService == null) throw new ArgumentNullException(nameof(userService)); - if (runtimeState == null) throw new ArgumentNullException(nameof(runtimeState)); - _userService = userService; - _runtimeState = runtimeState; - } - - public AdminTokenAuthorizeAttribute() - { } - - public const string AuthorizationType = "AToken"; - - /// - /// Used to return the full value that needs to go in the Authorization header - /// - /// - /// - public static string GetAuthHeaderTokenVal(IUserService userService) - { - return $"{AuthorizationType} {GetAuthHeaderVal(userService)}"; - } - - public static AuthenticationHeaderValue GetAuthenticationHeaderValue(IUserService userService) - { - return new AuthenticationHeaderValue(AuthorizationType, GetAuthHeaderVal(userService)); - } - - private static string GetAuthHeaderVal(IUserService userService) - { - var admin = userService.GetUserById(Core.Constants.Security.SuperUserId); - - var token = $"{admin.Email}u____u{admin.Username}u____u{admin.RawPasswordValue}"; - - var encrypted = token.EncryptWithMachineKey(); - var bytes = Encoding.UTF8.GetBytes(encrypted); - var base64 = Convert.ToBase64String(bytes); - return $"val=\"{base64}\""; - } - - /// - /// Ensures that the user must be in the Administrator or the Install role - /// - /// - /// - protected override bool AuthorizeCore(HttpContextBase httpContext) - { - if (httpContext == null) throw new ArgumentNullException(nameof(httpContext)); - - // we need to that the app is configured and that a user is logged in - if (RuntimeState.Level != RuntimeLevel.Run) return false; - - // need the auth header - if (httpContext.Request.Headers["Authorization"] == null || httpContext.Request.Headers["Authorization"].IsNullOrWhiteSpace()) return false; - - var header = httpContext.Request.Headers["Authorization"]; - if (header.StartsWith("AToken ") == false) return false; - - var keyVal = Regex.Matches(header, "AToken val=(.*?)(?:$|\\s)"); - if (keyVal.Count != 1) return false; - if (keyVal[0].Groups.Count != 2) return false; - - var admin = UserService.GetUserById(Core.Constants.Security.SuperUserId); - if (admin == null) return false; - - try - { - //get the token value from the header - var val = keyVal[0].Groups[1].Value.Trim("\""); - //un-base 64 the string - var bytes = Convert.FromBase64String(val); - var encrypted = Encoding.UTF8.GetString(bytes); - //decrypt the string - var text = encrypted.DecryptWithMachineKey(); - - //split - some users have not set an email, don't strip out empty entries - var split = text.Split(new[] {"u____u"}, StringSplitOptions.None); - if (split.Length != 3) return false; - - //compare - return - split[0] == admin.Email - && split[1] == admin.Username - && split[2] == admin.RawPasswordValue; - } - catch (Exception ex) - { - Logger.LogError(ex, "Failed to format passed in token value"); - return false; - } - } - } -} diff --git a/src/Umbraco.Web/Mvc/BackOfficeArea.cs b/src/Umbraco.Web/Mvc/BackOfficeArea.cs deleted file mode 100644 index eeb48c3b38..0000000000 --- a/src/Umbraco.Web/Mvc/BackOfficeArea.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System.Web.Mvc; -using Umbraco.Core.Configuration; -using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Hosting; -using Umbraco.Web.Editors; - -namespace Umbraco.Web.Mvc -{ - // TODO: This has been ported to netcore, can be removed - internal class BackOfficeArea : AreaRegistration - { - private readonly GlobalSettings _globalSettings; - private readonly IHostingEnvironment _hostingEnvironment; - - public BackOfficeArea(GlobalSettings globalSettings, IHostingEnvironment hostingEnvironment) - { - _globalSettings = globalSettings; - _hostingEnvironment = hostingEnvironment; - } - - /// - /// Create the routes for the area - /// - /// - /// - /// By using the context to register the routes it means that the area is already applied to them all - /// and that the namespaces searched for the controllers are ONLY the ones specified. - /// - public override void RegisterArea(AreaRegistrationContext context) - { - - context.MapRoute( - "Umbraco_preview", - AreaName + "/preview/{action}/{editor}", - new {controller = "Preview", action = "Index", editor = UrlParameter.Optional}, - new[] { "Umbraco.Web.Editors" }); - - context.MapRoute( - "Umbraco_back_office", - AreaName + "/{action}/{id}", - new {controller = "BackOffice", action = "Default", id = UrlParameter.Optional}, - //limit the action/id to only allow characters - this is so this route doesn't hog all other - // routes like: /umbraco/channels/word.aspx, etc... - new - { - action = @"[a-zA-Z]*", - id = @"[a-zA-Z]*" - }, - new[] {typeof (BackOfficeController).Namespace}); - } - - public override string AreaName => _globalSettings.GetUmbracoMvcArea(_hostingEnvironment); - } -} diff --git a/src/Umbraco.Web/Mvc/Constants.cs b/src/Umbraco.Web/Mvc/Constants.cs deleted file mode 100644 index c71ed6b104..0000000000 --- a/src/Umbraco.Web/Mvc/Constants.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Umbraco.Web.Mvc -{ - /// - /// constants - /// - /// Migrated already to .Net Core - internal static class Constants - { - internal const string ViewLocation = "~/Views"; - - internal const string DataTokenCurrentViewContext = "umbraco-current-view-context"; - } -} diff --git a/src/Umbraco.Web/Mvc/DisableBrowserCacheAttribute.cs b/src/Umbraco.Web/Mvc/DisableBrowserCacheAttribute.cs deleted file mode 100644 index 567e9ca145..0000000000 --- a/src/Umbraco.Web/Mvc/DisableBrowserCacheAttribute.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; -using System.Web; -using System.Web.Mvc; - -namespace Umbraco.Web.Mvc -{ - /// - /// Ensures that the request is not cached by the browser - /// - public class DisableBrowserCacheAttribute : ActionFilterAttribute - { - public override void OnResultExecuting(ResultExecutingContext filterContext) - { - base.OnResultExecuting(filterContext); - - // could happens if exception (but AFAIK this wouldn't happen in MVC) - if (filterContext.HttpContext == null || filterContext.HttpContext.Response == null || - filterContext.HttpContext.Response.Cache == null) - { - return; - } - - if (filterContext.IsChildAction) - { - return; - } - - if (filterContext.HttpContext.Response.StatusCode != 200) - { - return; - } - - filterContext.HttpContext.Response.Cache.SetLastModified(DateTime.Now); - filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false); - filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache); - filterContext.HttpContext.Response.Cache.SetMaxAge(TimeSpan.Zero); - filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); - filterContext.HttpContext.Response.Cache.SetNoStore(); - filterContext.HttpContext.Response.AddHeader("Pragma", "no-cache"); - filterContext.HttpContext.Response.Cache.SetExpires(new DateTime(1990, 1, 1, 0, 0, 0)); - } - } -} diff --git a/src/Umbraco.Web/Mvc/HtmlTagWrapper.cs b/src/Umbraco.Web/Mvc/HtmlTagWrapper.cs deleted file mode 100644 index 518121eef9..0000000000 --- a/src/Umbraco.Web/Mvc/HtmlTagWrapper.cs +++ /dev/null @@ -1,212 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Web.UI; -using System.IO; -using System.Web; -using Umbraco.Core; - -namespace Umbraco.Web.Mvc -{ - public class HtmlTagWrapper : IHtmlTagWrapper, IHtmlString - { - public HtmlTagWrapper Parent; - - private readonly List _children; - public IEnumerable Children - { - get { return _children; } - } - - private List> _attributes; - public IEnumerable> Attributes - { - get { return _attributes; } - } - - public void ReflectAttributesFromAnonymousType(List> newAttributes) - { - List> mergedAttributes = - newAttributes - .Concat(Attributes) - .GroupBy(kvp => kvp.Key, kvp => kvp.Value) - .Select(g => new KeyValuePair(g.Key, string.Join(" ", g.ToArray()))) - .ToList(); - - _attributes = mergedAttributes; - } - public void ReflectAttributesFromAnonymousType(object anonymousAttributes) - { - var newAttributes = - anonymousAttributes - .GetType() - .GetProperties() - .Where(prop => !string.IsNullOrWhiteSpace(string.Format("{0}", prop.GetValue(anonymousAttributes, null)))) - .ToList() - .ConvertAll(prop => - new KeyValuePair( - prop.Name, - string.Format("{0}", prop.GetValue(anonymousAttributes, null)) - ) - ); - ReflectAttributesFromAnonymousType(newAttributes); - - } - - public List CssClasses; - public string Tag; - public bool Visible; - - public HtmlTagWrapper(string tag) - { - this.Tag = tag; - this._children = new List(); - this.CssClasses = new List(); - this._attributes = new List>(); - this.Visible = true; - } - public HtmlString Write() - { - if ((Children.Any() || Attributes.Any() || CssClasses.Count > 0) && Visible) - { - using (MemoryStream ms = new MemoryStream()) - { - using (TextWriter tw = new StreamWriter(ms)) - { - HtmlTextWriter html = new HtmlTextWriter(tw); - this.WriteToHtmlTextWriter(html); - tw.Flush(); - ms.Position = 0; - using (TextReader tr = new StreamReader(ms)) - { - string result = tr.ReadToEnd(); - return new HtmlString(result); - } - } - } - } - return new HtmlString(string.Empty); - } - public override string ToString() - { - return "Use @item.Write() to emit the HTML rather than @item"; - } - public IHtmlString ToHtml() - { - return this.Write(); - } - public void WriteToHtmlTextWriter(HtmlTextWriter html) - { - html.WriteBeginTag(Tag); - string cssClassNames = string.Join(" ", CssClasses.ToArray()).Trim(); - foreach (var attribute in Attributes) - { - html.WriteAttribute(attribute.Key, attribute.Value); - } - if (!string.IsNullOrWhiteSpace(cssClassNames)) - { - html.WriteAttribute("class", cssClassNames); - } - html.Write(HtmlTextWriter.TagRightChar); - foreach (var child in Children) - { - child.WriteToHtmlTextWriter(html); - } - html.WriteEndTag(Tag); - } - - public HtmlTagWrapper AddClassName(string className) - { - className = className.Trim(); - if (!this.CssClasses.Contains(className)) - { - this.CssClasses.Add(className); - } - return this; - } - - public HtmlTagWrapper RemoveClassName(string className) - { - className = className.Trim(); - if (this.CssClasses.Contains(className)) - { - this.CssClasses.Remove(className); - } - return this; - } - - public bool HasClassName(string className) - { - className = className.Trim(); - return (this.CssClasses.Contains(className)); - } - - public HtmlTagWrapper Attr(object newAttributes) - { - this.ReflectAttributesFromAnonymousType(newAttributes); - return this; - } - public HtmlTagWrapper Attr(string name, string value) - { - if (!string.IsNullOrWhiteSpace(value)) - { - var newAttributes = new List> {new KeyValuePair(name, value)}; - this.ReflectAttributesFromAnonymousType(newAttributes); - } - else - { - var existingKey = this._attributes.Find(item => item.Key == name); - _attributes.Remove(existingKey); - } - return this; - } - - public HtmlTagWrapper AddChild(IHtmlTagWrapper newChild) - { - _children.Add(newChild); - return this; - } - public HtmlTagWrapper AddChildren(params IHtmlTagWrapper[] collection) - { - _children.AddRange(collection); - return this; - } - public HtmlTagWrapper AddChild(string text) - { - _children.Add(new HtmlTagWrapperTextNode(text)); - return this; - } - public HtmlTagWrapper AddChildAt(int index, IHtmlTagWrapper newChild) - { - _children.Insert(index, newChild); - return this; - } - public HtmlTagWrapper AddChildAt(int index, string text) - { - _children.Insert(index, new HtmlTagWrapperTextNode(text)); - return this; - } - public HtmlTagWrapper AddChildrenAt(int index, params IHtmlTagWrapper[] collection) - { - _children.InsertRange(index, collection); - return this; - } - public HtmlTagWrapper RemoveChildAt(int index) - { - return this; - } - public int CountChildren() - { - return this.Children.Count(); - } - public HtmlTagWrapper ClearChildren() - { - return this; - } - - public string ToHtmlString() - { - return this.Write().ToHtmlString(); - } - } - -} diff --git a/src/Umbraco.Web/Mvc/HtmlTagWrapperTextNode.cs b/src/Umbraco.Web/Mvc/HtmlTagWrapperTextNode.cs deleted file mode 100644 index 1085c2a279..0000000000 --- a/src/Umbraco.Web/Mvc/HtmlTagWrapperTextNode.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Umbraco.Core; - -namespace Umbraco.Web.Mvc -{ - public class HtmlTagWrapperTextNode : IHtmlTagWrapper - { - public string Content { get; private set; } - public HtmlTagWrapperTextNode(string content) - { - this.Content = content; - } - - public void WriteToHtmlTextWriter(System.Web.UI.HtmlTextWriter html) - { - html.WriteEncodedText(Content); - } - } -} diff --git a/src/Umbraco.Web/Mvc/IHtmlTagWrapper.cs b/src/Umbraco.Web/Mvc/IHtmlTagWrapper.cs deleted file mode 100644 index 1c0ff9ca47..0000000000 --- a/src/Umbraco.Web/Mvc/IHtmlTagWrapper.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Web.UI; - -namespace Umbraco.Web.Mvc -{ - public interface IHtmlTagWrapper - { - void WriteToHtmlTextWriter(HtmlTextWriter html); - } -} diff --git a/src/Umbraco.Web/Mvc/UmbracoViewPageOfTModel.cs b/src/Umbraco.Web/Mvc/UmbracoViewPageOfTModel.cs index 503ea59550..18e1fb8a1a 100644 --- a/src/Umbraco.Web/Mvc/UmbracoViewPageOfTModel.cs +++ b/src/Umbraco.Web/Mvc/UmbracoViewPageOfTModel.cs @@ -124,102 +124,5 @@ namespace Umbraco.Web.Mvc _contentSettings = contentSettings.Value; } - // view logic below: - - /// - /// Ensure that the current view context is added to the route data tokens so we can extract it if we like - /// - /// - /// Currently this is required by mvc macro engines - /// - protected override void InitializePage() - { - base.InitializePage(); - - if (ViewContext.IsChildAction) return; - - // this is used purely for partial view macros that contain forms and mostly - // just when rendered within the RTE - this should already be set with the - // EnsurePartialViewMacroViewContextFilterAttribute - if (ViewContext.RouteData.DataTokens.ContainsKey(Constants.DataTokenCurrentViewContext) == false) - ViewContext.RouteData.DataTokens.Add(Constants.DataTokenCurrentViewContext, ViewContext); - } - - /// - /// This will detect the end /body tag and insert the preview badge if in preview mode - /// - /// - public override void WriteLiteral(object value) - { - // filter / add preview banner - if (Response.ContentType.InvariantEquals("text/html")) // ASP.NET default value - { - if (Current.UmbracoContext.IsDebug || Current.UmbracoContext.InPreviewMode) - { - var text = value.ToString(); - var pos = text.IndexOf("", StringComparison.InvariantCultureIgnoreCase); - - if (pos > -1) - { - string markupToInject; - - if (Current.UmbracoContext.InPreviewMode) - { - // creating previewBadge markup - markupToInject = - string.Format(_contentSettings.PreviewBadge, - Current.IOHelper.ResolveUrl(_globalSettings.UmbracoPath), - Server.UrlEncode(HttpContext.Current.Request.Url?.PathAndQuery), - Current.UmbracoContext.PublishedRequest.PublishedContent.Id); - } - else - { - // creating mini-profiler markup - markupToInject = Html.RenderProfiler().ToHtmlString(); - } - - var sb = new StringBuilder(text); - sb.Insert(pos, markupToInject); - - base.WriteLiteral(sb.ToString()); - return; - } - } - } - - base.WriteLiteral(value); - } - - public override void Write(object value) - { - if (value is IHtmlEncodedString htmlEncodedString) - { - base.WriteLiteral(htmlEncodedString.ToHtmlString()); - } - else - { - base.Write(value); - } - } - - public HelperResult RenderSection(string name, Func defaultContents) - { - return WebViewPageExtensions.RenderSection(this, name, defaultContents); - } - - public HelperResult RenderSection(string name, HelperResult defaultContents) - { - return WebViewPageExtensions.RenderSection(this, name, defaultContents); - } - - public HelperResult RenderSection(string name, string defaultContents) - { - return WebViewPageExtensions.RenderSection(this, name, defaultContents); - } - - public HelperResult RenderSection(string name, IHtmlString defaultContents) - { - return WebViewPageExtensions.RenderSection(this, name, defaultContents); - } } } diff --git a/src/Umbraco.Web/Mvc/ValidateUmbracoFormRouteStringAttribute.cs b/src/Umbraco.Web/Mvc/ValidateUmbracoFormRouteStringAttribute.cs index 8d929197e1..7ee44a6abc 100644 --- a/src/Umbraco.Web/Mvc/ValidateUmbracoFormRouteStringAttribute.cs +++ b/src/Umbraco.Web/Mvc/ValidateUmbracoFormRouteStringAttribute.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Net; using System.Net.Http; using System.Web.Mvc; @@ -13,7 +14,7 @@ namespace Umbraco.Web.Mvc /// /// /// Applying this attribute/filter to a or SurfaceController Action will ensure that the Action can only be executed - /// when it is routed to from within Umbraco, typically when rendering a form with BegingUmbracoForm. It will mean that the natural MVC route for this Action + /// when it is routed to from within Umbraco, typically when rendering a form with BeginUmbracoForm. It will mean that the natural MVC route for this Action /// will fail with a . /// [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] @@ -37,7 +38,6 @@ namespace Umbraco.Web.Mvc var ufprt = filterContext.HttpContext.Request["ufprt"]; ValidateRouteString(ufprt, filterContext.ActionDescriptor?.ControllerDescriptor.ControllerName, filterContext.ActionDescriptor?.ActionName, filterContext.RouteData?.DataTokens["area"]?.ToString()); } - public void ValidateRouteString(string ufprt, string currentController, string currentAction, string currentArea) { if (ufprt.IsNullOrWhiteSpace()) diff --git a/src/Umbraco.Web/Mvc/ViewContextExtensions.cs b/src/Umbraco.Web/Mvc/ViewContextExtensions.cs deleted file mode 100644 index 5131f63f9e..0000000000 --- a/src/Umbraco.Web/Mvc/ViewContextExtensions.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System.IO; -using System.Web.Mvc; - -namespace Umbraco.Web.Mvc -{ - internal static class ViewContextExtensions - { - /// - /// Creates a new ViewContext from an existing one but specifies a new Model for the ViewData - /// - /// - /// - /// - public static ViewContext CopyWithModel(this ViewContext vc, object model) - { - return new ViewContext - { - Controller = vc.Controller, - HttpContext = vc.HttpContext, - RequestContext = vc.RequestContext, - RouteData = vc.RouteData, - TempData = vc.TempData, - View = vc.View, - ViewData = new ViewDataDictionary(vc) - { - Model = model - }, - FormContext = vc.FormContext, - ClientValidationEnabled = vc.ClientValidationEnabled, - UnobtrusiveJavaScriptEnabled = vc.UnobtrusiveJavaScriptEnabled, - Writer = vc.Writer - }; - } - - //public static ViewContext CloneWithWriter(this ViewContext vc, TextWriter writer) - //{ - // return new ViewContext - // { - // Controller = vc.Controller, - // HttpContext = vc.HttpContext, - // RequestContext = vc.RequestContext, - // RouteData = vc.RouteData, - // TempData = vc.TempData, - // View = vc.View, - // ViewData = vc.ViewData, - // FormContext = vc.FormContext, - // ClientValidationEnabled = vc.ClientValidationEnabled, - // UnobtrusiveJavaScriptEnabled = vc.UnobtrusiveJavaScriptEnabled, - // Writer = writer - // }; - //} - } -} diff --git a/src/Umbraco.Web/Runtime/WebInitialComponent.cs b/src/Umbraco.Web/Runtime/WebInitialComponent.cs index f07914f2d2..1daf950537 100644 --- a/src/Umbraco.Web/Runtime/WebInitialComponent.cs +++ b/src/Umbraco.Web/Runtime/WebInitialComponent.cs @@ -21,7 +21,6 @@ namespace Umbraco.Web.Runtime public sealed class WebInitialComponent : IComponent { private readonly IUmbracoContextAccessor _umbracoContextAccessor; - private readonly SurfaceControllerTypeCollection _surfaceControllerTypes; private readonly UmbracoApiControllerTypeCollection _apiControllerTypes; private readonly GlobalSettings _globalSettings; private readonly IHostingEnvironment _hostingEnvironment; @@ -29,14 +28,12 @@ namespace Umbraco.Web.Runtime public WebInitialComponent( IUmbracoContextAccessor umbracoContextAccessor, - SurfaceControllerTypeCollection surfaceControllerTypes, UmbracoApiControllerTypeCollection apiControllerTypes, GlobalSettings globalSettings, IHostingEnvironment hostingEnvironment, IShortStringHelper shortStringHelper) { _umbracoContextAccessor = umbracoContextAccessor; - _surfaceControllerTypes = surfaceControllerTypes; _apiControllerTypes = apiControllerTypes; _globalSettings = globalSettings; _hostingEnvironment = hostingEnvironment; @@ -58,7 +55,7 @@ namespace Umbraco.Web.Runtime ConfigureGlobalFilters(); // set routes - CreateRoutes(_umbracoContextAccessor, _globalSettings, _shortStringHelper, _surfaceControllerTypes, _apiControllerTypes, _hostingEnvironment); + CreateRoutes(_umbracoContextAccessor, _globalSettings, _shortStringHelper, _apiControllerTypes, _hostingEnvironment); } public void Terminate() @@ -86,7 +83,7 @@ namespace Umbraco.Web.Runtime private void SetupMvcAndWebApi() { //don't output the MVC version header (security) - MvcHandler.DisableMvcResponseHeader = true; + //MvcHandler.DisableMvcResponseHeader = true; // set master controller factory // var controllerFactory = new MasterControllerFactory(() => Current.FilteredControllerFactories); @@ -108,7 +105,6 @@ namespace Umbraco.Web.Runtime IUmbracoContextAccessor umbracoContextAccessor, GlobalSettings globalSettings, IShortStringHelper shortStringHelper, - SurfaceControllerTypeCollection surfaceControllerTypes, UmbracoApiControllerTypeCollection apiControllerTypes, IHostingEnvironment hostingEnvironment) { @@ -126,22 +122,21 @@ namespace Umbraco.Web.Runtime // RouteTable.Routes.RegisterArea(); // register all back office routes - RouteTable.Routes.RegisterArea(new BackOfficeArea(globalSettings, hostingEnvironment)); + // RouteTable.Routes.RegisterArea(new BackOfficeArea(globalSettings, hostingEnvironment)); // plugin controllers must come first because the next route will catch many things - RoutePluginControllers(globalSettings, surfaceControllerTypes, apiControllerTypes, hostingEnvironment); + RoutePluginControllers(globalSettings, apiControllerTypes, hostingEnvironment); } private static void RoutePluginControllers( GlobalSettings globalSettings, - SurfaceControllerTypeCollection surfaceControllerTypes, UmbracoApiControllerTypeCollection apiControllerTypes, IHostingEnvironment hostingEnvironment) { var umbracoPath = globalSettings.GetUmbracoMvcArea(hostingEnvironment); // need to find the plugin controllers and route them - var pluginControllers = surfaceControllerTypes.Concat(apiControllerTypes).ToArray(); + var pluginControllers = apiControllerTypes; //TODO was: surfaceControllerTypes.Concat(apiControllerTypes).ToArray(); // local controllers do not contain the attribute var localControllers = pluginControllers.Where(x => PluginController.GetMetadata(x).AreaName.IsNullOrWhiteSpace()); diff --git a/src/Umbraco.Web/Runtime/WebInitialComposer.cs b/src/Umbraco.Web/Runtime/WebInitialComposer.cs index 5f227b37ad..32e7835ffb 100644 --- a/src/Umbraco.Web/Runtime/WebInitialComposer.cs +++ b/src/Umbraco.Web/Runtime/WebInitialComposer.cs @@ -66,8 +66,8 @@ namespace Umbraco.Web.Runtime //.SetDefaultRenderMvcController(); // default controller for template views //we need to eagerly scan controller types since they will need to be routed - composition.WithCollectionBuilder() - .Add(composition.TypeLoader.GetSurfaceControllers()); + // composition.WithCollectionBuilder() + // .Add(composition.TypeLoader.GetSurfaceControllers()); // auto-register views diff --git a/src/Umbraco.Web/TypeLoaderExtensions.cs b/src/Umbraco.Web/TypeLoaderExtensions.cs index 1cf8bc124c..8dac034fbf 100644 --- a/src/Umbraco.Web/TypeLoaderExtensions.cs +++ b/src/Umbraco.Web/TypeLoaderExtensions.cs @@ -10,6 +10,7 @@ namespace Umbraco.Web /// /// Provides extension methods for the class. /// + // Migrated to .NET Core public static class TypeLoaderExtensions { /// diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index e331d4c5f4..e83c29b7de 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -128,7 +128,6 @@ Properties\SolutionInfo.cs - @@ -136,7 +135,6 @@ - @@ -156,7 +154,6 @@ - @@ -201,7 +198,6 @@ - @@ -213,7 +209,6 @@ - @@ -226,15 +221,11 @@ - - - - @@ -268,7 +259,6 @@ - @@ -285,11 +275,7 @@ - - - - @@ -305,10 +291,8 @@ - - @@ -328,7 +312,6 @@ Component - @@ -344,4 +327,4 @@ - \ No newline at end of file + diff --git a/src/Umbraco.Web/UmbracoHelper.cs b/src/Umbraco.Web/UmbracoHelper.cs index c55e5ccb51..3ca0a58c00 100644 --- a/src/Umbraco.Web/UmbracoHelper.cs +++ b/src/Umbraco.Web/UmbracoHelper.cs @@ -446,6 +446,8 @@ namespace Umbraco.Web #endregion + + //Migrated to EncryptionHelper internal static bool DecryptAndValidateEncryptedRouteString(string ufprt, out IDictionary parts) { string decryptedString; diff --git a/src/Umbraco.Web/UrlHelperRenderExtensions.cs b/src/Umbraco.Web/UrlHelperRenderExtensions.cs index ba6a0540f0..dfa2632ea0 100644 --- a/src/Umbraco.Web/UrlHelperRenderExtensions.cs +++ b/src/Umbraco.Web/UrlHelperRenderExtensions.cs @@ -312,76 +312,81 @@ namespace Umbraco.Web return result; } - /// - /// Generates a URL based on the current Umbraco URL with a custom query string that will route to the specified SurfaceController - /// - /// - /// - /// - /// - public static string SurfaceAction(this UrlHelper url, string action, Type surfaceType) - { - return url.SurfaceAction(action, surfaceType, null); - } + //TODO Move to LinkGenerator + // /// + // /// Generates a URL based on the current Umbraco URL with a custom query string that will route to the specified SurfaceController + // /// + // /// + // /// + // /// + // /// + // public static string SurfaceAction(this UrlHelper url, string action, Type surfaceType) + // { + // return url.SurfaceAction(action, surfaceType, null); + // } - /// - /// Generates a URL based on the current Umbraco URL with a custom query string that will route to the specified SurfaceController - /// - /// - /// - /// - /// - /// - public static string SurfaceAction(this UrlHelper url, string action, Type surfaceType, object additionalRouteVals) - { - if (action == null) throw new ArgumentNullException(nameof(action)); - if (string.IsNullOrEmpty(action)) throw new ArgumentException("Value can't be empty.", nameof(action)); - if (surfaceType == null) throw new ArgumentNullException(nameof(surfaceType)); + //TODO Move to LinkGenerator + // /// + // /// Generates a URL based on the current Umbraco URL with a custom query string that will route to the specified SurfaceController + // /// + // /// + // /// + // /// + // /// + // /// + // public static string SurfaceAction(this UrlHelper url, string action, Type surfaceType, object additionalRouteVals) + // { + // if (action == null) throw new ArgumentNullException(nameof(action)); + // if (string.IsNullOrEmpty(action)) throw new ArgumentException("Value can't be empty.", nameof(action)); + // if (surfaceType == null) throw new ArgumentNullException(nameof(surfaceType)); + // + // var area = ""; + // + // + // var surfaceController = Current.SurfaceControllerTypes.SingleOrDefault(x => x == surfaceType); + // if (surfaceController == null) + // throw new InvalidOperationException("Could not find the surface controller of type " + surfaceType.FullName); + // var metaData = PluginController.GetMetadata(surfaceController); + // if (metaData.AreaName.IsNullOrWhiteSpace() == false) + // { + // //set the area to the plugin area + // area = metaData.AreaName; + // } + // + // var encryptedRoute = CreateEncryptedRouteString(metaData.ControllerName, action, area, additionalRouteVals); + // + // var result = Current.UmbracoContext.OriginalRequestUrl.AbsolutePath.EnsureEndsWith('?') + "ufprt=" + encryptedRoute; + // return result; + // } - var area = ""; + // /// + // /// Generates a URL based on the current Umbraco URL with a custom query string that will route to the specified SurfaceController + // /// + // /// + // /// + // /// + // /// + // //TODO Move to LinkGenerator + // public static string SurfaceAction(this UrlHelper url, string action) + // where T : SurfaceController + // { + // return url.SurfaceAction(action, typeof (T)); + // } - var surfaceController = Current.SurfaceControllerTypes.SingleOrDefault(x => x == surfaceType); - if (surfaceController == null) - throw new InvalidOperationException("Could not find the surface controller of type " + surfaceType.FullName); - var metaData = PluginController.GetMetadata(surfaceController); - if (metaData.AreaName.IsNullOrWhiteSpace() == false) - { - //set the area to the plugin area - area = metaData.AreaName; - } - - var encryptedRoute = CreateEncryptedRouteString(metaData.ControllerName, action, area, additionalRouteVals); - - var result = Current.UmbracoContext.OriginalRequestUrl.AbsolutePath.EnsureEndsWith('?') + "ufprt=" + encryptedRoute; - return result; - } - - /// - /// Generates a URL based on the current Umbraco URL with a custom query string that will route to the specified SurfaceController - /// - /// - /// - /// - /// - public static string SurfaceAction(this UrlHelper url, string action) - where T : SurfaceController - { - return url.SurfaceAction(action, typeof (T)); - } - - /// - /// Generates a URL based on the current Umbraco URL with a custom query string that will route to the specified SurfaceController - /// - /// - /// - /// - /// - /// - public static string SurfaceAction(this UrlHelper url, string action, object additionalRouteVals) - where T : SurfaceController - { - return url.SurfaceAction(action, typeof (T), additionalRouteVals); - } + // /// + // /// Generates a URL based on the current Umbraco URL with a custom query string that will route to the specified SurfaceController + // /// + // /// + // /// + // /// + // /// + // /// + // //TODO Move to LinkGenerator + // public static string SurfaceAction(this UrlHelper url, string action, object additionalRouteVals) + // where T : SurfaceController + // { + // return url.SurfaceAction(action, typeof (T), additionalRouteVals); + // } /// /// This is used in methods like BeginUmbracoForm and SurfaceAction to generate an encrypted string which gets submitted in a request for which diff --git a/src/Umbraco.Web/WebViewPageExtensions.cs b/src/Umbraco.Web/WebViewPageExtensions.cs deleted file mode 100644 index 51f811061c..0000000000 --- a/src/Umbraco.Web/WebViewPageExtensions.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Web; -using System.Web.Mvc; -using System.Web.WebPages; - -namespace Umbraco.Web -{ - public static class WebViewPageExtensions - { - public static HelperResult RenderSection(this WebPageBase webPage, string name, Func defaultContents) - { - return webPage.IsSectionDefined(name) ? webPage.RenderSection(name) : defaultContents(null); - } - - public static HelperResult RenderSection(this WebPageBase webPage, string name, HelperResult defaultContents) - { - return webPage.IsSectionDefined(name) ? webPage.RenderSection(name) : defaultContents; - } - - public static HelperResult RenderSection(this WebPageBase webPage, string name, string defaultContents) - { - return webPage.IsSectionDefined(name) ? webPage.RenderSection(name) : new HelperResult(text => text.Write(defaultContents)); - } - - public static HelperResult RenderSection(this WebPageBase webPage, string name, IHtmlString defaultContents) - { - return webPage.IsSectionDefined(name) ? webPage.RenderSection(name) : new HelperResult(text => text.Write(defaultContents)); - } - } -}