Получить базовый URL из запланированного задания при запуске приложения

У меня есть TaskScheduler с функцией EmailInactiveUsers с чего я начинаю Application_Start(),

Мне нужна ссылка на корень моего приложения в моей электронной почте, которую я отправляю. Но как мне получить базовый URL моего приложения, не имея доступа к HttpContext?

Мое решение для резервного копирования было бы добавить этот URL к web.config, но было бы неплохо, если бы я мог делать это динамически, так как мы развертываем это приложение во многих разных местах.

Application_Start

protected void Application_Start()
{
    ...

    TaskScheduler.EmailInactiveUsers();
}

Диспетчер задач

public class TaskScheduler
{
    ...

    public static void EmailInactiveUsers()
    {
        IJobDetail job = JobBuilder.Create<InactiveUsersCheck>().Build();

        ITrigger trigger = TriggerBuilder.Create()
                .StartNow()
                .WithSimpleSchedule(x => x
                    .WithIntervalInHours(24)
                    .RepeatForever())
                .Build();

        scheduler.ScheduleJob(job, trigger);
    }
}

InactiveUsersCheck

public class InactiveUsersCheck : IJob
{
    public void Execute(IJobExecutionContext context)
    {
        ...

        // Get base url here but there's no Request or HttpContext.Current available
        var Url = Request.Url.GetLeftPart(UriPartial.Authority);
    }
}

0 ответов

Другие вопросы по тегам