【问题标题】:Windows Shared hosting - custom scheduled taskWindows 共享主机 - 自定义计划任务
【发布时间】:2011-03-09 12:14:42
【问题描述】:

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

提供商告诉我,出于安全原因,我无法运行可执行文件。 我该怎么办?

供应商建议我购买一个 VPS,但不认为为了运行一些计划任务而花更多的钱是有意义的。

是否存在替代方法?

【问题讨论】:

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


    【解决方案1】:

    Jeff Atwood has created blog entry on this.

    简而言之:

    • 将项目添加到缓存中
    • 让它在您想要的时间间隔内过期
    • 添加一个在缓存过期时执行的触发器
    • 在触发器中重新添加您的项目

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

    【讨论】:

      【解决方案2】:

      您可以在共享主机上使用ATrigger 调度服务简单.Net library 也可用于创建计划任务而无需开销。此外,您还有报告面板来列出任务并记录所有可能的错误。

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

      【讨论】:

        【解决方案3】:

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

        如果一天一次的处理很耗时,那么您可以在页面创建的线程中进行。这将停止请求超时。

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

        【讨论】:

          【解决方案4】:

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

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

          希望这会有所帮助。

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2010-10-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-06-08
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多