【问题标题】:Cron job asp.netCron 作业 asp.net
【发布时间】:2014-05-20 23:38:23
【问题描述】:

我有一个时钟输入和时钟输出模块,用于记录来自 Asp.NET 应用程序的工作人员的开始时间和结束时间。

我想问如何为 asp.net 应用程序做 cron 工作,以查看工作人员在该日期或星期是否没有输入他们的时间,并发送电子邮件通知提醒他们输入开始时间和结束时间。

【问题讨论】:

  • 我进行了一系列修改以提供帮助,但请随时恢复我弄错的任何内容。
  • 我试图弄清楚什么是“玉米工作”......
  • 您可以在 ASP.NET 中使用一些缓存过期回调来模拟这种情况,但这可能不是最好的方法。
  • 告诉你工作不安全,但请放心,一旦你拥有了一个,你就再也不会想要其他任何东西了。

标签: c# asp.net sql sql-server cron


【解决方案1】:

ASP.NET 不适合这项工作。您最好编写一个在计划任务上运行的Console Application,或者编写一个定期轮询的Windows Service。 ASP.NET 纯粹用于请求/响应模型。

任何一个都可以像访问 ASP.NET 站点一样轻松地访问网站正在读取/写入的任何数据存储。

如果您都没有这样做,那么控制台应用程序是迄今为止最容易编写和实现的。与控制台应用程序可能的 XCOPY 部署模型相比,Windows 服务并没有那么糟糕,但涉及额外的开销,包括调试困难,以及需要通过 special installation process

如果您真的想在 ASP.NET 中执行此操作,您可以编写一个执行此操作的 asp.net 网页,并使用 Windows 计划任务来运行它。计划任务可以将 Internet Explorer 打开到特定页面,就像它可以运行任何可执行文件一样容易。 但我不会推荐它。任务完成后,您将永远不得不关闭 IE 窗口,这真的是一个“骇人听闻”的解决方案。当我还是一名纯粹的 Web 开发人员时,我就这样做了,当时我不知道有什么更好的,但从那以后就没有了。

【讨论】:

  • 我们过去都做过类似的事情,但我们仍在努力忘记它们。我曾经使用鼠标记录器来自动化一个过程,它当然充满了错误,尤其是当用户改变桌面的分辨率时,因为其他一些员工喜欢不同的分辨率。当然,您可以通过其他方式解决,但真正的问题是我的解决方案。 ;)
  • 好的。说如果我创建控制台应用程序或 Windows 服务。我可以将此插件发布到数据中心吗
  • 这取决于谁在托管它以及您拥有多少访问权限。如果您没有能力进行此设置,并且您的托管管理员不会为您完成此设置,那么@Chris Farmer 的答案是您的最佳选择。或者,您可以将 ASP.NET Web 服务添加到您的 Web 应用程序,并从您控制的机器上调用它。您无权执行此类操作这一事实是一个重要的细节,它完全改变了答案。
  • 我可以使用控制台应用解决方案,但从长远来看,我认为我必须创建 PHP 脚本来完成这种工作,对吗?
  • 嗯..不一定...由于您的问题被标记为 ASP.NET,我假设您是 .NET 开发人员。你可以用任何你熟悉的语言来做这种工作。如果你愿意,你可以在 PHP 上做......这也可能取决于主机的配置。
【解决方案2】:

Jeff Atwood 在 Stack Overflow 博客上以Easy Background Tasks in ASP.NET 为标题,在该网站的早期发布了关于在 ASP.NET 中执行后台任务的简单方法。如果您的任务相对较轻,这可能不是一个坏方法。如果您有理由真的希望将所有内容都保留在现有的 ASP.NET 应用程序中,那么这可能是您要走的路。

要点:

  1. 在启动时,向 HttpRuntime.Cache 添加一个具有固定过期时间的项目。
  2. 当缓存项过期时,做你的工作,例如 WebRequest 或你有什么。
  3. 将项目重新添加到具有固定过期时间的缓存中。

【讨论】:

  • +1 - 我仍然不推荐这个 - 我仍然认为它不适合这项工作,但它会起作用,而且它是完成工作的一种快速而肮脏的方式。跨度>
【解决方案3】:

虽然从技术上讲,它不是一项 cron 工作,但您可以在网站内让网站在一天中的 X 时间调用设置的页面。

我已经通过 web 方法调用完成了几次,从应用程序启动开始在计时器上调用该方法。

基本解释在这里: Call a webpage from c# in code

【讨论】:

    猜你喜欢
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 2014-06-13
    • 2016-10-06
    • 1970-01-01
    • 2014-11-22
    • 2012-02-18
    相关资源
    最近更新 更多