2

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

我有哪些选择?

4

4 回答 4

1

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

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

Cache.Add和参数onRemoveCallback

onRemoveCallback - 类型:System.Web.Caching.CacheItemRemovedCallback 如果提供,则在从缓存中删除对象时调用该委托。当应用程序的对象从缓存中删除时,您可以使用它来通知应用程序。

于 2012-05-09T10:34:32.257 回答
1

cron 工作有可能吗?

0 0 * * * curl -q http://www.example.com/page.aspx
于 2012-05-09T10:36:23.967 回答
0

那么,您最好的选择是静态构造函数 + 计时器 + 一些确保它每天只运行一次的安全措施。

您可能需要改进它以确保一些事情,例如不要等待一整天的第一次运行。如果上一次运行是 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 为您完成所有工作。您仍然需要一个静态构造函数来确保代码在应用加载时执行。

于 2012-05-09T11:10:18.397 回答
0

要使用 ASP.NET 在您的网站内执行计划任务,我建议您阅读这篇文章

于 2012-05-09T11:13:14.947 回答