有没有办法在Quartz.NET作业中获得对HttpContext对象的访问权限?

时间:2013-11-11 15:07:07

标签: quartz-scheduler quartz.net

有没有办法从Quartz.NET作业访问HttpContext对象? HttpContext.Current和喜欢似乎不适用于Quartz.NET作业。

2 个答案:

答案 0 :(得分:3)

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

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

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

HttpContext context = context.JobDetail.JobDataMap["context"] as HttpContext;

答案 1 :(得分:2)

简而言之,没有。

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

使用像ASP.NET MVC这样的框架,您可以在没有实际上下文的情况下执行某些操作,例如生成路由URL等,但请求和响应(几乎是上下文)不可用。

您需要对职责进行分区,以便Quartz作业可以自主运行。