我想确保在我的.net 内置网站中每天点击一次(且仅一次)链接,我在共享服务器上,因此无法运行可执行文件 - 并且无法访问 24 小时开机的电脑创建计划任务。
我有哪些选择?
您可以使用缓存类 - 添加新缓存条目时,您可以将其设置为在 24 小时内过期,并传入事件处理程序以在它过期时执行。
在事件处理程序中,您可以重置缓存条目。
见Cache.Add
和参数onRemoveCallback
:
onRemoveCallback - 类型:
System.Web.Caching.CacheItemRemovedCallback
如果提供,则在从缓存中删除对象时调用该委托。当应用程序的对象从缓存中删除时,您可以使用它来通知应用程序。
cron 工作有可能吗?
0 0 * * * curl -q http://www.example.com/page.aspx
那么,您最好的选择是静态构造函数 + 计时器 + 一些确保它每天只运行一次的安全措施。
您可能需要改进它以确保一些事情,例如不要等待一整天的第一次运行。如果上一次运行是 23 小时前,请不要等待一整天。一些数学本质上是为了确保下一次运行是从运行后 24 小时开始的。
就像是,
private static DateTime _lastNavigated;
private static Timer _myTimer
static MyObject()
{
_myTimer = new Timer(24 * 60 * 60 * 1000);
_myTimer.Elapsed += MyOnceADayCode;
_myTimer.Enabled = true;
}
public static void MyOnceADayCode(object source, ElapsedEventArgs e)
{
_lastNavigated = DateTime.UtcNow;
if (DateTime.UtcNow > _lastNavigated.AddDays(1))
{
// Haven't navigated in the last day, need to navigate again
}
}
另一个想法(取决于您的帐户是否可以访问)是创建(使用代码)计划任务。有一些很好的包装类使用 COM 为您完成所有工作。您仍然需要一个静态构造函数来确保代码在应用加载时执行。
要使用 ASP.NET 在您的网站内执行计划任务,我建议您阅读这篇文章。