我正在使用quartz.net来安排asp.net mvc应用程序中的常规事件.
调度的作业应该调用一个需要UrlHelper实例的服务层脚本(用于根据服务发送的电子邮件中包含的正确路由(通过urlHelper.Action(..))创建Urls).
我不想将链接硬编码到电子邮件中 - 他们应该使用urlhelper来解决.
工作:
public class EvaluateRequestsJob : Quartz.IJob { public void Execute(JobExecutionContext context) { // where to get a usable urlHelper instance? ServiceFactory.GetRequestService(urlHelper).RunEvaluation(); } }
请注意,这不是在MVC管道中运行的.没有提供当前请求,代码由Quartz调度程序在定义的时间运行.
如何在指定的地方获取UrlHelper实例?
如果不可能构造一个UrlHelper,我看到的另一个选项是通过执行HTTP请求来使作业“自动调用”控制器操作 – 在执行该操作时,我当然可以使用一个UrlHelper实例 – 但是对我来说似乎有点黑客.
解决方法
如何在本
answer中为UrlHelpler创建一个新的HttpContext: