Windows共享主机 - 自定义计划任务

时间:2011-03-09 12:14:43

标签: asp.net asp.net-mvc-2 shared-hosting

我有一个Windows共享主机,我需要每天运行一些预定的c#可执行文件来创建站点地图,发送新闻通讯等...

提供商告诉我出于安全原因我无法运行可执行文件。 我能做什么?

提供商建议我购买VPS,但不认为花更多的钱来运行某些预定的任务是有意义的。

是否存在替代方式?

5 个答案:

答案 0 :(得分:7)

Jeff Atwood has created blog entry on this.

简而言之:

  • 将项添加到缓存
  • 按照您想要的间隔过期
  • 添加触发器以在缓存过期时执行
  • 在触发器中重新添加项目

我首先考虑the solution from Andy,它看起来更容易管理。

答案 1 :(得分:3)

您可以在共享主机上使用ATrigger日程安排服务 .Net library也可用于创建计划任务而无需开销。您还可以使用报告面板列出任务并记录所有可能的错误。

免责声明:我是ATrigger团队的一员。这是一个免费软件,我没有任何商业目的。

答案 2 :(得分:1)

在共享服务器上的asp.net页面中实施一天一次的任务。然后在您具有完全访问权限的计算机上设置一个进程,以便在预定时间每天一次请求该页面。

如果每天一次的处理非常耗时,那么您可以在页面创建的线程中执行此操作。这将停止请求超时。

为了防止滥用,您可以为页面提供一个不起眼的名称,通过IP地址限制访问(如果共享服务器的控制面板允许),和/或要求请求进程进行身份验证。该页面还可以将最后一个请求时间存储在缓存中,并且只有在自上次请求后经过了足够的时间时才执行所需的处理。

答案 3 :(得分:0)

这不是理想的,但你可以从一个基页继承你的所有页面(一个继承System.Web.UI.Page的页面,后续页面继承该页面),并且在每个页面加载(在基页中)你可以检查要在特定时间范围内运行的任务的数据库表。如果在给定页面加载时,在给定时间选择了要运行的任务,并且该页面被请求匹配(或超过时间),则可以在此时运行该页面。

遗憾的是,这取决于您希望作业运行时或附近访问您网站的网站用户。此外,另一个缺点是,如果您的作业与页面其余部分的执行同步运行,请求页面的用户可能正在等待。

希望这有帮助。

答案 4 :(得分:0)

共享主机面板中有计划任务。 http://pasteboard.co/2oBUrVeM.png

您可以触发发送电子邮件的操作方法的网址。