我正在使用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一样:

09-25 16:34