我想确保在.net内置的网站中每天点击一次(并且只有一次)链接, 我在共享服务器上,因此无法运行可执行文件 - 并且无法访问24小时开机以创建计划任务的电脑。
我有什么选择?
答案 0 :(得分:1)
您可以使用缓存类 - 添加新缓存条目时,您可以将其设置为在24小时后过期,并传入事件处理程序以在其过期时执行。
在事件处理程序中,您可以重置缓存条目。
请参阅Cache.Add
和onRemoveCallback
的参数:
onRemoveCallback - 输入:
System.Web.Caching.CacheItemRemovedCallback
从缓存中删除对象时调用的委托(如果提供)。您可以使用它来通知应用程序从缓存中删除对象时。
答案 1 :(得分:1)
cron的工作是否有可能?
0 0 * * * curl -q http://www.example.com/page.aspx
答案 2 :(得分:0)
然后你最好的选择是静态构造函数+ Timer +一些安全保护,确保它每天只运行一次。
您可能希望改进这一点,以确保一些事情,例如,不要等待第一次运行一整天。如果之前的运行时间是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为你做所有的工作。您仍然需要一个静态构造函数来确保代码在app load上执行。
答案 3 :(得分:0)
要使用ASP.NET在您的网站内执行计划任务,建议您阅读this article。