【发布时间】:2018-06-12 14:48:38
【问题描述】:
我有一个在线程中运行的长时间运行的任务。我想在这个线程中设置HttpContext.Current,这样我的HttpContextFactory就可以得到当前的HttpContext。
这是我的 TaskRunner 类:
public class TaskRunner
{
public TaskRunner(
IQueueProcessorFactory queueProcessorFactory,
IHttpContextFactory httpContextFactory)
{
_queueProcessorFactory = queueProcessorFactory;
_httpContextFactory = httpContextFactory;
}
public void StartQueueProcessorThread()
{
var currentContext = _httpContextFactory.Create(); // Simply Gets new HttpContextWrapper(HttpContext.Current);
queueProcessor = new Thread(
() =>
{
HttpContext.Current = currentContext; // Cannot implicitly convert type 'System.Web.HttpContextBase' to 'System.Web.HttpContext'
_queueProcessorFactory.Create().ProcessQueue(); // Log running task
})
{ Name = "QueueProcessor" };
queueProcessor.Start();
}
}
有没有使用注入的 _httpContextFactory 设置 HttpContext.Current 的简单方法?
【问题讨论】:
标签: multithreading dependency-injection httpcontext