在Asp.net中安排。什么是最佳解决方案?

时间:2012-05-01 14:52:49

标签: c# asp.net windows-services scheduled-tasks

我想在Asp.net中安排调度

我有以下选项来实现此

  1. 编写SQLServer JOB(我不想这样做。不想超越.Net环境)

  2. 第二个选项是我将编写Windows服务,这个窗口服务将调用asp.net   webservice然后这个webservice调用asp.net方法
      (我也不需要这样做,因为我的托管服务提供商可能不允许我安装   窗口服务)

  3. 第三个选项是我在全局类的Application_Start事件中调用我的调度方法   (缺点是,网络服务器会随时终止线程)

  4. 在主页的Page_Load事件中调用计划代码(可能无法访问我的网站几个小时    ,由于调度代码,页面执行也可能很慢)

  5. 我还发现了一些以给定间隔调用您页面的在线服务,其中一些在下面给出

    http://www.cronservice.co.uk/new/ http://scheduler.codeeffects.com

  6. 任何人都给我betet解决方案,并解释为什么它是下注者?

    先谢谢

6 个答案:

答案 0 :(得分:4)

ASP.NET应用程序不是实现调度的正确位置。我建议创建一个短时间运行的服务或计划任务。

答案 1 :(得分:1)

您在共享托管环境中没有很多选项。我的主机(WinHost)允许远程访问他们的数据库,因此我能够使用Task Scheduler创建在本地服务器上运行的可执行文件。

由于数据库是通过Internet访问的,性能不是很好,但它仍然比尝试使用ASP.NET运行伪计划任务更好。

某些主机还提供了一项服务,该服务将按计划在您的网站中请求网址。但是,这对我不起作用,因为我必须运行的任务花费的时间比请求超时时间长。

答案 2 :(得分:0)

没有一种适合所有人的解决方案。 SQL作业和Windows作业(通过windows task scheduler计划)被广泛使用。在我之前的一个工作场所,他们有在多个平台(大型机,Windows,SQL服务器)上运行的作业。其中一些工作失败,每天将花费数千美元。所以他们雇用了一种叫ESP的东西该软件监控所有平台上的作业,并在发生故障时向控制室发送消息。

如果您对要求有更多了解,我们可以帮助您做得更好。

答案 3 :(得分:0)

ASP.NET不适合存放计划任务。当我必须创建计划任务时,我正在使用Quartz.net。

答案 4 :(得分:0)

创建一个启动任务的网页,并将其放在网址http://www.mydomain.com/runtask

在您的家庭PC上创建一个计划任务,向http://www.mydomain.com/runtask发送请求。

您需要始终保持家用电脑的开启状态。

答案 5 :(得分:0)

理想情况下,当您获得完全控制/历史记录/错误报告等时,我会使用数字1。您可以在.NET中编写SSIS作业并让S​​QL服务器安排它。

但是,我遇到了类似的问题,共享托管非常严格。我所做的是创建一个页面,在页面加载时运行该进程(使用查询字符串中的验证来确保安全性)。然后我使用了一台机器,我总是打开一个Windows任务调度程序(这是Windows的一部分作为标准)调用一些VB脚本打开浏览器,然后关闭它。