24小时运行服务

时间:2011-12-02 06:40:51

标签: c# asp.net-mvc asp.net-mvc-3

我正在使用ASP.Net mvc 3 C#来制作一个Web应用程序。我有一些服务需要在x分钟的间隔内运行。此外,可以为此服务更新或更改某些设置。

我不确定,我应该使用什么技术来保持我的服务在服务器上运行,并且能够使用ASP.Net MVC接口(web)远程停止/运行它。

我假设某个隐藏的服务或应用程序有一个计时器,每x分钟触发一次所需的作业。

任何建议,因为这是我的第一个大型.Net项目:)

谢谢

5 个答案:

答案 0 :(得分:1)

这取决于您对部署环境的控制。如果它是您的服务器并且您拥有足够的权限,则可以:

  1. 编写一个包含计时器的Windows服务,它会唤醒并在您的网络应用程序上执行Http请求。

  2. 设置运行VB脚本(或类似程序)的计划任务,以调用您的网络应用程序。

  3. 我不建议做的一件事是在你的网络应用程序中使用一个后台线程,它上面有一个计时器。您可以这样做(http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+haacked+%28you%27ve+been+HAACKED%29)但如果网络的应用域名被删除,则本质上是不安全的。

    如果您要部署到ISP,共享主机,或者出于某种原因,您只能部署您的Web应用程序而不需要其他任何内容,则需要在其他地方运行调用Web应用程序的脚本。大多数ISP,即使在共享主机上,也可以让您设置计划任务。然后,您可以将简单的VB脚本上传到cgi-bin,例如,调用Web应用程序(http://chriscant.phdcc.com/2011/05/scheduled-task-ping-for-plesk-in.html)。

    我即将自己实施最后一个解决方案。

答案 1 :(得分:1)

您可以使用Quartz.NET,因为网站上写着“Quartz.NET是一个功能齐全的开源作业调度系统,可以在最小的应用程序和大型企业系统中使用。”

答案 2 :(得分:0)

如果您有专用服务器,则可以使用Windows服务。否则,我们可以创建Web服务。将从计时器调用此Web服务,该计时器将在特定时间间隔自动触发。并且需要在global.asax文件上指定的application_start事件下启动此计时器。

答案 3 :(得分:0)

我会使应用程序需要每隔x分钟运行一个控制台应用程序,该应用程序从XML文件或数据库中读取它的设置。然后可以在Asp.NET MVC应用程序中调整设置。 您还需要一个始终运行的Windows服务,每隔x分钟启动一次控制台应用程序。此外,可以通过Asp.NET应用程序设置间隔和可能的属性。

答案 4 :(得分:0)

您可以按照建议开发控制台。但是,您的查询更多地围绕如何操作它。您的客户是否有任何类型的调度程序。通常,调度程序具有自己的Web interace或API,允许您管理操作方面。

如果您想调用Windows Services via .Net

,请参阅此处
相关问题