有没有办法从Quartz.NET作业访问HttpContext对象? HttpContext.Current和喜欢似乎不适用于Quartz.NET作业。
答案 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作业可以自主运行。