Sto usando quartz.net per pianificare eventi regolari all'interno dell'applicazione asp.net mvc.ASP.NET MVC: come creare un'istanza UrlHelper utilizzabile?
Il processo pianificato deve chiamare uno script del livello di servizio che richiede un'istanza UrlHelper (per la creazione di URL in base ai percorsi corretti (via urlHelper.Action(..)
) contenuti nelle e-mail che verranno inviate dal servizio).
Io non voglio hardcode i link nelle email - dovrebbero essere risolti utilizzando l'UrlHelper.
Il lavoro:
public class EvaluateRequestsJob : Quartz.IJob
{
public void Execute(JobExecutionContext context)
{
// where to get a usable urlHelper instance?
ServiceFactory.GetRequestService(urlHelper).RunEvaluation();
}
}
Si prega di notare che questo non viene eseguito all'interno della tubazione MVC. Non viene fornita alcuna richiesta corrente, il codice viene eseguito dallo scheduler Quartz a orari definiti.
Come è possibile ottenere un'istanza UrlHelper utilizzabile nel luogo indicato?
Se non è possibile costruire un'UrlHelper, l'altra opzione che vedo è quello di rendere il lavoro "auto-call" un'azione di controllo facendo una richiesta HTTP - durante l'esecuzione l'azione che sarà ovviamente hanno un'istanza UrlHelper disponibile - ma questo mi sembra un po 'hacky.
Wow i voti negativi stanno volando su questa discussione :) – Kelsey
@Kelsey forse è perché la questione sembra essere troppo banale così le persone tendono a dare banale o irrilevante le risposte o la domanda richiede almeno una conoscenza di base del framework non così noto (quarzo) – Marek
Questo programma di pianificazione del quarzo usa qualcosa di simile al metodo con cui Jeff ha scritto un post: http://blog.stackoverflow.com/2008/07/ easy-background-tasks-in-aspnet /? – Kelsey