c#.net网站的自动化任务

时间:2012-04-10 17:35:35

标签: c# .net windows-server-2008

所以,这个问题已被提出很多问题,我已经看到了许多不同的答案,但对于我的情景来说,没有任何限制或绝对的答案。

_

我想做什么:

我们有一个网站,有一个用户社区。

在网站的管理部分,有按钮可以运行以下功能:

通过电子邮件向所有用户发送我们的每周时事通讯[星期四下午4点],

消息用户当天的信息[每日下午6点],

通过facebook连接到Facebook [每日上午8点和下午6点],

等等等(很快就会有新的要求,但它们会遵循相同的原则)

_

我想要做的就是自动运行这些功能,因此一名员工无需访问网站,登录,然后在设定的时间点击每个按钮。

即,实际上,让服务器在上述设定时间自动点击这些按钮。

_

我已经看到了使用内置计时器构建服务的建议,它将调用每个函数,或使用Windows任务调度程序,构建exe / com等,但我觉得它不应该是这么复杂。< / p>

我们已经编写了代码来实际执行.net网页中的任务,并使用一些自定义构建的类等。

我只是不知道如何在所需的时间自动调用这些函数。

_

服务器信息: 运行Windows Web Server 2008 R2(64位)的专用服务器

发展环境: Visual Studio 2010 SP1,使用.NET 4.0

_

提前感谢您的帮助。

Kindest Regards,

德尔

4 个答案:

答案 0 :(得分:5)

将代码拆分为可以从Windows任务调度程序以及应用程序调用的单独的exes / dll是可行的方法。

当您运行的操作系统中存在调度程序时,重新发明应用程序内的调度程序是没有意义的。特别是因为你的应用程序是一个Web应用程序,它应该做web事情而不是服务器事物。

额外的优势在于您使应用程序更加模块化,更易于升级。

答案 1 :(得分:2)

根据定义,Web服务器会响应请求。这种基本设计以各种方式表现出来,例如应用程序池在一段时间不活动后关闭。出于这个原因,在Web服务器的上下文中执行与时间相关的代码并不是一个好主意,因为很难保证代码实际运行(没有跳过很​​多具有其他负面影响的箍) )。相反,外部时间相关机制应该向Web服务器发送请求以执行这些功能。

你说你不想使用Windows Scheduler或写一个外部exe,因为“它不应该这么复杂”;但是我没有看到计划任务调用Web服务有什么复杂。

答案 2 :(得分:0)

嗯,虽然我同意为Windows任务调度程序欢呼的其他答案,并且该网站与调度任务无关(它可以是输入参数的来源,而不是任务运行程序本身),您可以尝试使用调度库,如quartz.NET在后台安排并运行必要的流程。

答案 3 :(得分:0)

下载cURL - 命令行HTTP请求实用程序。使用任务计划程序中的此实用程序,使用执行功能所需的特定查询字符串来调用您的网页/ Web服务。

http://curl.haxx.se/

这不是非常安全 - 任何知道正确查询字符串的人都可能导致这些函数执行 - 但它给你一般的想法。在我看来,编写一个使用程序集直接执行功能的控制台应用程序会更安全。从任务计划程序调用控制台应用程序。