diff --git a/src/Umbraco.Abstractions/UmbracoContextReference.cs b/src/Umbraco.Abstractions/UmbracoContextReference.cs index 3cd97cd77b..bd021494e6 100644 --- a/src/Umbraco.Abstractions/UmbracoContextReference.cs +++ b/src/Umbraco.Abstractions/UmbracoContextReference.cs @@ -14,22 +14,24 @@ namespace Umbraco.Web /// public class UmbracoContextReference : IDisposable //fixme - should we inherit from DisposableObjectSlim? { + private readonly IUmbracoContextAccessor _umbracoContextAccessor; private bool _disposed; /// /// Initializes a new instance of the class. /// - internal UmbracoContextReference(bool isRoot, IUmbracoContext umbracoContext) + internal UmbracoContextReference(IUmbracoContext umbracoContext, bool isRoot, IUmbracoContextAccessor umbracoContextAccessor) { IsRoot = isRoot; UmbracoContext = umbracoContext; + _umbracoContextAccessor = umbracoContextAccessor; } /// /// Gets the . /// - public IUmbracoContext UmbracoContext { get; private set; } + public IUmbracoContext UmbracoContext { get; } /// /// Gets a value indicating whether the reference is a root reference. @@ -49,7 +51,7 @@ namespace Umbraco.Web if (IsRoot) { UmbracoContext.Dispose(); - UmbracoContext = null; + _umbracoContextAccessor.UmbracoContext = null; } GC.SuppressFinalize(this); diff --git a/src/Umbraco.Web/UmbracoContextFactory.cs b/src/Umbraco.Web/UmbracoContextFactory.cs index d627d9e823..a84e51eda3 100644 --- a/src/Umbraco.Web/UmbracoContextFactory.cs +++ b/src/Umbraco.Web/UmbracoContextFactory.cs @@ -77,13 +77,13 @@ namespace Umbraco.Web { var currentUmbracoContext = _umbracoContextAccessor.UmbracoContext; if (currentUmbracoContext != null) - return new UmbracoContextReference(false, currentUmbracoContext); + return new UmbracoContextReference(currentUmbracoContext, false, _umbracoContextAccessor); var umbracoContext = CreateUmbracoContext(); _umbracoContextAccessor.UmbracoContext = umbracoContext; - return new UmbracoContextReference(true, umbracoContext); + return new UmbracoContextReference(umbracoContext, true, _umbracoContextAccessor); } // dummy TextWriter that does not write