#5306: Injecting HttpContextBase directly.

This will ensure that an actual HttpContext object will be available in case of background task operations thanks to the way HttpContextBase is registered (providing a placeholder object in case of background operations).
This commit is contained in:
Sipke Schoorstra
2015-05-21 17:24:45 +02:00
parent 475feb923d
commit 4d242e83df

View File

@@ -1,16 +1,19 @@
using System.Web;
using System.Web.Mvc;
using Orchard.Layouts.Filters;
using Orchard.Mvc;
namespace Orchard.Layouts.Services {
public class CurrentControllerAccessor : ICurrentControllerAccessor {
private readonly IHttpContextAccessor _httpContextAccessor;
public CurrentControllerAccessor(IHttpContextAccessor httpContextAccessor) {
_httpContextAccessor = httpContextAccessor;
private readonly IWorkContextAccessor _wca;
private readonly HttpContextBase _httpContext;
public CurrentControllerAccessor(IWorkContextAccessor wca, HttpContextBase httpContext) {
_wca = wca;
_httpContext = httpContext;
}
public Controller CurrentController {
get { return (Controller) _httpContextAccessor.Current().Items[ControllerAccessorFilter.CurrentControllerKey]; }
get { return (Controller) _httpContext.Items[ControllerAccessorFilter.CurrentControllerKey]; }
}
}
}