我正在使用quartz.net来安排asp.net mvc应用程序中的常规事件。
计划的作业应调用需要UrlHelper实例的服务层脚本(用于基于将由该服务发送的电子邮件中包含的正确路由(via 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一样: