如何在托管网站

时间:2015-07-16 10:37:37

标签: asp.net

我制作了一个网页应用程序,可以在页面加载时自动发送电子邮件。但是如何在托管我的网站的go daddy服务器上每天自动加载一次Default.aspx页面?

3 个答案:

答案 0 :(得分:1)

整体问题是"我如何每24小时发送一封电子邮件"。这实际上与网页无关,除了这是您当前的触发机制。最好改变你的问题以涵盖整体目标,但是......

你最好有一个单独的任务。一种方法是使用缓存过期,如下所述:https://blog.stackexchange.com/2008/07/easy-background-tasks-in-aspnet/

  1. 在启动时,将一个项目添加到HttpRuntime.Cache并且过期时间固定。

  2. 当缓存项目过期时,请完成您的工作,例如WebRequest或您拥有的内容。

  3. 使用固定的到期时间将项目重新添加到缓存中。

  4. 代码(来自该网站):

    private static CacheItemRemovedCallback OnCacheRemove = null;
    
    protected void Application_Start(object sender, EventArgs e)
    {
        AddTask("DoStuff", 60 * 60 * 24);
    }
    
    private void AddTask(string name, int seconds)
    {
        OnCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved);
        HttpRuntime.Cache.Insert(name, seconds, null, 
            DateTime.Now.AddSeconds(seconds), Cache.NoSlidingExpiration,
            CacheItemPriority.NotRemovable, OnCacheRemove);
    }
    
    public void CacheItemRemoved(string k, object v, CacheItemRemovedReason r)
    {
        // do stuff here if it matches our taskname, like WebRequest
        // re-add our task so it recurs
        AddTask(k, Convert.ToInt32(v));
    }
    

答案 1 :(得分:0)

有几个选项

如果您使用另一台始终打开的计算机,您可以使用简单的计划任务或cron(取决于它是Windows还是Linux)来ping网址

如果您有免费的AWS或Azure帐户,您可以设置好的日程安排任务,或其中一个

使用像pingdom这样的免费监控服务,我会认为每隔x分钟最多可以ping一小时,但还有像pingability.com这样的其他服务也可以执行此操作。

答案 2 :(得分:0)

如果您打开了页面,可以在头部添加html metatag <meta http-equiv="refresh" content="86400"/>,每天重新加载一次。