Получить базовый 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);
}
}