3

から開始TaskSchedulerする関数を持っています。EmailInactiveUsersApplication_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);
    }
}
4

0 に答える 0