我的asp.net web项目有一个控制器方法"CalByNowBalance"它需要定期运行,比如每天早上7点运行一次。参考一个博客,我在我的项目控制器类中创建了一个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();
}
}
嗯,如果你有访问Azure帐户的权限,你可以创建一个带有时间触发器的Azure函数。在这个函数中,您可以发送到将在ASP中创建的Web Api。网络项目。从这个Web Api,你可以调用你的控制器类。