diff --git a/src/Orchard/Mvc/HttpContextAccessor.cs b/src/Orchard/Mvc/HttpContextAccessor.cs index bb1904df1..826bec0ce 100644 --- a/src/Orchard/Mvc/HttpContextAccessor.cs +++ b/src/Orchard/Mvc/HttpContextAccessor.cs @@ -1,13 +1,16 @@ using System; -using System.Runtime.Remoting; -using System.Runtime.Remoting.Messaging; using System.Web; +using Autofac; namespace Orchard.Mvc { - public class HttpContextAccessor : IHttpContextAccessor { + readonly ILifetimeScope _lifetimeScope; private HttpContextBase _httpContext; + public HttpContextAccessor(ILifetimeScope lifetimeScope) { + _lifetimeScope = lifetimeScope; + } + public HttpContextBase Current() { var httpContext = GetStaticProperty(); @@ -17,8 +20,10 @@ namespace Orchard.Mvc { if (_httpContext != null) return _httpContext; - var context = CallContext.LogicalGetData("HttpContext") as ObjectHandle; - return context != null ? context.Unwrap() as HttpContextBase : null; + var workContext = _lifetimeScope.IsRegistered() ? + _lifetimeScope.Resolve().GetContext(null) : null; + + return workContext != null ? workContext.HttpContext : null; } public void Set(HttpContextBase httpContext) {