c# .net 网站的自动化任务
本文关键字:自动化 任务 网站 net | 更新日期: 2023-09-27 18:30:43
所以,这个问题已经被问了很多,我看到了许多不同的答案,但对于我的场景来说,没有什么是有限的或绝对的。
_
我想做什么:
我们有一个网站,有一个用户社区。
在网站的管理部分,有运行以下功能的按钮:
通过电子邮件向所有用户发送我们的每周时事通讯[星期四下午4点],
向用户发送当天的信息 [每天下午 6 点],
通过Facebook Connect [每天上午8点和下午6点]发布到Facebook,
等等(很快就会有新的要求,但它们将遵循相同的原则)
_
我想做的只是自动运行这些功能,这样工作人员就不需要去网站,登录,然后在设定的时间点击每个按钮。
也就是说,有效地让服务器在上述设置时间自动单击这些按钮。
_
我已经看到了使用内置计时器构建服务的建议,该计时器将调用每个函数,或使用Windows任务计划程序,构建exe/com等,但我的直觉感觉它不应该这么复杂。
我们已经编写了代码来实际执行 .net 网页中的任务,并使用一些自定义构建的类等。
我只是不知道如何在所需的时间自动调用这些函数。
_
服务器信息:运行 Windows Web Server 2008 R2(64 位)的专用服务器
发展环境:Visual Studio 2010 SP1,使用 .NET 4.0
_
提前感谢您的帮助。
最亲切的问候,
戴尔
代码拆分为可以从Windows任务计划程序以及应用程序调用的单独的exe/dll是要走的路。
当您正在运行的操作系统中存在调度程序时,在应用程序中重新发明调度程序是没有意义的。特别是当你的应用程序是一个Web应用程序,它应该做Web的事情而不是服务器的事情。
额外的优点是,您使应用程序更加模块化且更易于升级。
根据定义,Web 服务器响应请求。此基本设计以各种方式表现出来,例如应用程序池在一段时间不活动后关闭。出于这个原因,在 Web 服务器的上下文中执行与时间相关的代码不是一个好主意,因为很难保证代码会实际运行(而不会跳过许多具有其他负面副作用的箍)。相反,外部时间相关机制应向 Web 服务器发送请求以执行这些功能。
你说你不想使用Windows Scheduler或编写外部exe,因为"它不应该这么复杂";但我看不出让计划任务调用Web服务有什么复杂之处。
好吧,虽然我同意其他为Windows任务调度程序欢呼的答案,并且该网站与调度任务无关(它可以是输入参数的来源,而不是任务运行器本身),但您可以尝试使用像 quartz.NET 这样的调度库在后台调度和运行必要的进程。
Download cURL - 一个命令行 HTTP 请求实用程序。从任务计划程序中使用此实用程序,使用执行函数所需的特定查询字符串调用您的网页/Web 服务。
http://curl.haxx.se/
这不是很安全 - 任何知道正确查询字符串的人都可能导致这些函数执行 - 但它为您提供了大致的概念。 在我看来,编写一个使用程序集直接执行功能的控制台应用程序要安全得多。 从任务计划程序调用控制台应用。