From f3b3e0a7fb4c19364060409fc9a812c689430ed8 Mon Sep 17 00:00:00 2001 From: jtkech Date: Tue, 8 Dec 2015 20:54:53 +0100 Subject: [PATCH] Update WorkContextAccessor.cs --- src/Orchard/Environment/WorkContextAccessor.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Orchard/Environment/WorkContextAccessor.cs b/src/Orchard/Environment/WorkContextAccessor.cs index f878f6689..e9f2fc4db 100644 --- a/src/Orchard/Environment/WorkContextAccessor.cs +++ b/src/Orchard/Environment/WorkContextAccessor.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Runtime.Remoting; using System.Runtime.Remoting.Messaging; using System.Web; using Autofac; @@ -27,7 +28,8 @@ namespace Orchard.Environment { if (!httpContext.IsBackgroundContext()) return httpContext.Items[_workContextKey] as WorkContext; - return CallContext.LogicalGetData("WorkContext") as WorkContext; + var context = CallContext.LogicalGetData("WorkContext") as ObjectHandle; + return context != null ? context.Unwrap() as WorkContext : null; } public WorkContext GetContext() { @@ -35,7 +37,8 @@ namespace Orchard.Environment { if (!httpContext.IsBackgroundContext()) return GetContext(httpContext); - return CallContext.LogicalGetData("WorkContext") as WorkContext; + var context = CallContext.LogicalGetData("WorkContext") as ObjectHandle; + return context != null ? context.Unwrap() as WorkContext : null; } public IWorkContextScope CreateWorkContextScope(HttpContextBase httpContext) { @@ -104,11 +107,11 @@ namespace Orchard.Environment { public CallContextScopeImplementation(IEnumerable events, ILifetimeScope lifetimeScope) { _workContext = lifetimeScope.Resolve(); - CallContext.LogicalSetData("WorkContext", _workContext); + CallContext.LogicalSetData("WorkContext", new ObjectHandle(_workContext)); CallContext.LogicalSetData("HttpContext", null); var httpContext = lifetimeScope.Resolve(); - CallContext.LogicalSetData("HttpContext", httpContext); + CallContext.LogicalSetData("HttpContext", new ObjectHandle(httpContext)); _disposer = () => { events.Invoke(e => e.Finished(), NullLogger.Instance);