4

有什么方法可以从 Quartz.NET 作业中访问 HttpContext 对象?HttpContext.Current 等似乎不适用于 Quartz.NET 作业。

4

2 回答 2

4

是的,有办法。在实例化新调度程序时(可能在 Global.asax 中的 Application_Start 事件中)
只需将HttpContext.Current设置为JobDataMap ,如下所示:

jobDetail.JobDataMap["context"] = HttpContext.Current;

然后在 Execute 方法中访问它,如下所示:

HttpContext context = context.JobDetail.JobDataMap["context"] as HttpContext;
于 2013-12-16T18:44:04.793 回答
3

简而言之,没有。

作业在不知道某个时间点发生的 HTTP 请求的不同线程上运行。该作业可能会在处理请求后运行,因此上下文无论如何都是无效的。

使用像 ASP.NET MVC 这样的框架,你可以在没有实际上下文的情况下做一些事情,比如生成路由 url 等,但是请求和响应(几乎是上下文)不可用。

您需要划分职责,以便 Quartz 作业可以自主工作。

于 2013-11-12T06:44:40.970 回答