我正在使用quartz.net在asp.net mvc应用程序中安排定期事件。
计划的作业应该调用一个服务层脚本,该脚本需要一个UrlHelper实例(用于基于正确路由创建链接(通过urlHelper.Action(..)),这些链接包含服务发送的电子邮件)。
我不想在电子邮件中硬编码链接-它们应该使用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实例 - 但这似乎有点hacky。