Планирование задач для ASP.NET с доступом к HttpContext - PullRequest
0 голосов
/ 29 мая 2019

Прежде всего, моя цель - реализовать планирование задач, при котором задача состоит в том, чтобы каждый день создавать автономный HTML-файл текущей веб-страницы.

Я пробовал Quartz.NET, но он кажется непригодным, поскольку класс Job не может получить доступ к HttpContext. Поскольку содержимое страницы в значительной степени зависит от данных на стороне сервера, и существует много правок на стороне клиента при создании автономного файла, они могут быть очень сложными, если нет прямого доступа к «готовым» HttpContext. * 1005. *

Любая рекомендация и идея для меня?

(я использую более раннюю версию ASP.NET вместо Core, поэтому HttpContextAccessor тоже не рассматривается.)

1 Ответ

0 голосов
/ 29 мая 2019

При создании Job у вас есть доступ к HttpContext, вы можете предоставить всю информацию от HttpContext до JobBuilder.

Код взят из https://www.quartz -scheduler.net / documents / quartz-3.x / tutorial / more-about-jobs.html

Код находится в c #Надеюсь, вы сможете сделать то же самое в vb.net

// define the job and tie it to our DumbJob class

IJobDetail job = JobBuilder.Create<DumbJob>()
    .WithIdentity("myJob", "group1")
    .UsingJobData("jobSays", "Hello World!") // key value (put required key and value from HttpContext)
    .UsingJobData("myFloatValue", 3.141f)
    .Build();

Вот краткий пример получения данных из JobDataMap во время выполнения задания:

Получение значений из JobDataMap

public class DumbJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        JobKey key = context.JobDetail.Key;

        JobDataMap dataMap = context.JobDetail.JobDataMap;

        string jobSays = dataMap.GetString("jobSays");
        float myFloatValue = dataMap.GetFloat("myFloatValue");

        await Console.Error.WriteLineAsync("Instance " + key + " of DumbJob says: " + jobSays + ", and val is: " + myFloatValue);
    }
}
...