C# 始终在ASP.NET和外部web宿主中运行应用程序

C# 始终在ASP.NET和外部web宿主中运行应用程序,c#,asp.net,C#,Asp.net,我正在创建一个ASP.NET.NET 4.0网站,该网站的一部分要求有一个“始终运行”的应用程序。通常我会为此创建一个Windows服务,但该站点将托管在一个共享的托管环境中,除非我得到一个虚拟服务器,否则这是不可能的 我的第一个想法是让一个线程在后台运行,它将在应用程序启动时创建,并在应用程序结束时销毁。我环顾四周,这似乎是一个选项,但我当然必须点击该站点才能启动应用程序,如果关联的应用程序池被重新引用,那么这个过程将不得不重复(我相信是这样的?!?) 在一个普通的ASP.NET网站中,这似乎

我正在创建一个ASP.NET.NET 4.0网站,该网站的一部分要求有一个“始终运行”的应用程序。通常我会为此创建一个Windows服务,但该站点将托管在一个共享的托管环境中,除非我得到一个虚拟服务器,否则这是不可能的

我的第一个想法是让一个线程在后台运行,它将在应用程序启动时创建,并在应用程序结束时销毁。我环顾四周,这似乎是一个选项,但我当然必须点击该站点才能启动应用程序,如果关联的应用程序池被重新引用,那么这个过程将不得不重复(我相信是这样的?!?)


在一个普通的ASP.NET网站中,这似乎是可能的吗?

这取决于“始终运行应用程序”的含义:

如果它是一个实时服务,那么将其作为单独的进程运行仍然是有意义的,即使它可能有一个web前端。之所以如此,是因为ASP.NET服务器是由Microsoft在内存使用或多线程处理等许多方面为特定任务(运行web应用程序、渲染页面等)设计的。在这种情况下,我希望至少使用VDS


另一种情况是,当它是一个周期性(比如每小时)报警的应用程序时,它会执行一些简单的工作——也许您的共享宿主有一些机制来触发特定页面以执行某些工作(就像我的宿主所做的那样)。例如,我有一个ASP.NET页面,它监视我最喜欢的乐队的巡演日期列表,并在他们要在我的镇上演出时发送电子邮件通知-每4小时由主持人触发一次。

这取决于“始终运行应用程序”的含义:

如果它是一个实时服务,那么将其作为单独的进程运行仍然是有意义的,即使它可能有一个web前端。之所以如此,是因为ASP.NET服务器是由Microsoft在内存使用或多线程处理等许多方面为特定任务(运行web应用程序、渲染页面等)设计的。在这种情况下,我希望至少使用VDS


另一种情况是,当它是一个周期性(比如每小时)报警的应用程序时,它会执行一些简单的工作——也许您的共享宿主有一些机制来触发特定页面以执行某些工作(就像我的宿主所做的那样)。例如,我有一个ASP.NET页面,它监视我最喜欢的乐队的巡演日期列表,并在他们要在我的镇上演出时发送电子邮件通知——每4小时由主持人触发一次。

最后,我有一个单独的线程,坐在那里等待信号设置。一旦设置好,它就开始工作。为了确保线程始终处于活动状态,我对一个“虚拟”页面发出HTTP请求,以确保如果AppPool被回收,则会触发应用程序启动事件并重新启动线程。

最后,我有一个单独的线程,它会坐在那里等待信号设置。一旦设置好,它就开始工作。为了确保线程始终处于活动状态,我对一个“虚拟”页面发出HTTP请求,以确保如果AppPool被回收,则会触发应用程序启动事件并重新启动线程。

这里已经多次询问过这一点,虽然我现在正在努力寻找规范的问题/答案。这是我一直在思考的问题。我想这已经被问了很多,虽然我现在正在努力寻找规范的问题/答案。这是我一直在思考的问题,我想