Ich benutze quartz.net, um regelmäßige Ereignisse innerhalb asp.net mvc-Anwendung zu planen.ASP.NET MVC: Wie erstellt man eine verwendbare UrlHelper-Instanz?
Der geplante Job sollte ein Service-Layer-Skript aufrufen, das eine UrlHelper-Instanz benötigt (zum Erstellen von URLs basierend auf korrekten Routen (via urlHelper.Action(..)
) in E-Mails, die vom Service gesendet werden).
Ich möchte nicht die Links in die E-Mails hartcodieren - sie sollten mit dem URL-Helper gelöst werden.
Der Job:
public class EvaluateRequestsJob : Quartz.IJob
{
public void Execute(JobExecutionContext context)
{
// where to get a usable urlHelper instance?
ServiceFactory.GetRequestService(urlHelper).RunEvaluation();
}
}
Bitte beachten Sie, dass diese nicht in der MVC-Pipeline ausgeführt wird. Es wird keine aktuelle Anfrage gesendet, der Code wird zu bestimmten Zeiten vom Quartz-Scheduler ausgeführt.
Wie kann ich eine UrlHelper-Instanz an der angegebenen Stelle verwenden?
Wenn es nicht möglich ist, einen UrlHelper zu konstruieren, ist die andere Option, den Job als "Selbstaufruf" zu einer Controller-Aktion zu machen, indem ich eine HTTP-Anfrage mache - während ich die Aktion ausführe, habe ich natürlich eine UrlHelper-Instanz verfügbar - aber das scheint ein bisschen hacky für mich.
Wow die negativen Stimmen fliegen auf diesen Thread aus :) – Kelsey
@Kelsey vielleicht ist es, weil die Frage zu trivial zu sein scheint, so dass die Leute trivial oder irrelevant geben neigen Antworten oder die Frage erfordert mindestens Grundkenntnisse des nicht so gut bekannten Rahmenwerks (Quarz) – Marek
Verwendet dieser Quartz-Scheduler etwas ähnliches wie die Methode, die Jeff einen Beitrag gemacht hat: http://blog.stackoverflow.com/2008/07/ Easy-Hintergrund-Aufgaben-in-Aspnet /? – Kelsey