【问题标题】:How to run a asp.net controller method at certain time once a day如何在每天一次的特定时间运行 asp.net 控制器方法
【发布时间】:2021-09-21 21:09:54
【问题描述】:

我的 asp.net Web 项目有一个需要定期运行的控制器方法“CalByNowBalance”,即每天早上 7 点运行一次。 参考blog,我在我的项目控制器类中创建了一个 trimTrigger()。我不知道如何让它每天早上 7 点运行。这个触发器方法是否应该放在一个单独的类中而不是包含在控制器中?如果这应该作为 Windows 服务器触发,如何?我使用 Angular 作为客户端,它可以从客户端操作吗?任何解决方案或建议将不胜感激。

public async Task<ActionResult> TimeTrigger() {
            //Time when method needs to be called
            var DailyTime = "07:00:00";
            var timeParts = DailyTime.Split(new char[1] {':'});

            while(true)
            {
                var dateNow = DateTime.Now;
                var date = new DateTime(dateNow.Year, dateNow.Month, dateNow.Day,
                    int.Parse(timeParts[0]), int.Parse(timeParts[1]), int.Parse(timeParts[2]));
                TimeSpan timeSpan;

                if (date > dateNow) timeSpan = date - dateNow;
                else
                {
                    date = date.AddDays(1);
                    timeSpan = date - dateNow;
                };

                //waits certan time and run the code
                Task.Delay(timeSpan).Wait();
                
                await CalByNowBalance();
            }
        }

【问题讨论】:

    标签: asp.net angular server controller delay


    【解决方案1】:

    好吧,如果您有权访问 Azure 帐户,则可以使用时间触发器创建一个 Azure function。 在此函数中,您可以发布到将在您的 ASP.Net 项目中创建的 Web Api。然后,您可以从此 Web Api 调用您的控制器类。

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    相关资源
    最近更新 更多