【问题标题】:Always run application within ASP.NET and external web hosting始终在 ASP.NET 和外部 Web 托管中运行应用程序
【发布时间】:2012-03-25 04:16:59
【问题描述】:

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

我的第一个想法是在后台运行一个线程来执行此操作,它将在 Application_Start 上创建并在 Application_End 上销毁。我环顾四周,这似乎是一个选项,但我当然必须点击该站点才能调用 Application_Start 并且如果关联的 AppPool 被回收,那么这个过程将不得不重复(所以我相信?!?)。

在普通的 ASP.NET 网站中,这些似乎可行吗?

【问题讨论】:

标签: c# asp.net


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 2014-01-23
      相关资源
      最近更新 更多