0

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

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

4

3 回答 3

15

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

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

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

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

于 2012-09-11T15:29:24.680 回答
6

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

要点:

  1. 在启动时,向 HttpRuntime.Cache 添加一个具有固定过期时间的项目。
  2. 当缓存项过期时,做你的工作,比如 WebRequest 或者你有什么。
  3. 将项目重新添加到具有固定过期时间的缓存中。
于 2012-09-11T15:39:32.867 回答
0

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

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

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

于 2012-09-11T15:34:13.110 回答