【发布时间】:2013-10-18 16:19:27
【问题描述】:
我正在创建一个 ASP.NET .NET 4.0 网站,该网站的一部分要求有一个“始终运行”的应用程序。通常,我会为此创建一个 Windows 服务,但该站点将托管在共享托管环境中,除非我获得虚拟服务器,否则这是不可能的。
我的第一个想法是在后台运行一个线程来执行此操作,它将在 Application_Start 上创建并在 Application_End 上销毁。我环顾四周,这似乎是一个选项,但我当然必须点击该站点才能调用 Application_Start 并且如果关联的 AppPool 被回收,那么这个过程将不得不重复(所以我相信?!?)。
在一个普通的 ASP.NET 网站中,这些似乎是可能的吗?我正在开发一个 ASP.NET(带有 sql server)应用程序。
【问题讨论】:
-
虽然启动后台线程可能可能,但它不会可靠。您确实需要向该站点发出第一个请求才能启动该后台线程。此外,它可以随时被主机系统(我假设是 IIS)关闭。 Web 应用程序不适合始终运行的后台进程。正如您所指出的,Windows 服务(或某种计划任务)是。
-
查看您的主机是否允许您使用自动启动:weblogs.asp.net/scottgu/archive/2009/09/15/… 这将在任何用户尝试点击它之前尝试启动站点,包括您在 app_start 中创建的后台线程。跨度>
-
我正在使用 go daddy 服务器...
-
只需 cron/schedule 一个 web 请求来保持应用程序池的活动(尽管也有一个固定的回收生命周期)。当然,您需要另一台机器来执行此操作,周围有免费的在线机器。
-
很高兴你们都回复我你的回答...