每天点击一次URL

时间:2012-05-09 10:29:17

标签: .net

我想确保在.net内置的网站中每天点击一次(并且只有一次)链接, 我在共享服务器上,因此无法运行可执行文件 - 并且无法访问24小时开机以创建计划任务的电脑。

我有什么选择?

4 个答案:

答案 0 :(得分:1)

您可以使用缓存类 - 添加新缓存条目时,您可以将其设置为在24小时后过期,并传入事件处理程序以在其过期时执行。

在事件处理程序中,您可以重置缓存条目。

请参阅Cache.AddonRemoveCallback的参数:

  

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