确保dot.net站点始终运行

时间:2010-12-19 14:47:42

标签: asp.net iis

我创建了一个非常小的监控网络应用程序,定期轮询其他网站以检查它们是否还活着。如果他们不是我发送的电子邮件,我可以做出反应(例如,如果网站回复503)

但是我的问题是当AppPool回收时,监视器web-app被关闭,并且它永远不会再次启动,因为它没有请求。

有没有办法确保它在重新启动,重启服务器或类似服务器之后再次启动?

目前它在global.asax Application_Start中启动后台线程,然后该线程负责通过轮询以及其他站点来保持监视器web应用程序的活动。

这样它每隔一段时间就会得到一个HTTP请求。然而,这实际上只有在它实际启动时才能保持活着。

我已经阅读了一些有关IIS预热模块的内容,但该网站托管在我没有影响的服务器上,所以这是不可能的。

该站点使用ASP.Net 4.0构建,并在IIS 7.5服务器上运行。

希望你有个主意: - )

4 个答案:

答案 0 :(得分:2)

您应该将其实现为通过计划任务运行的Windows服务或控制台应用程序。网站实际上不是合适的应用程序类型。

答案 1 :(得分:2)

我使用uptime robot来确保我的应用程序始终正常运行。这个系统的美妙之处在于它只询问您网站上页面的标题,并且每5分钟获取一次状态代码,如“200-ok”,“404-not found”等。这意味着正常运行时机器人不会向Google Analytics添加噪音,因为永远不会请求该页面。

似乎对我来说就像一场梦,对于多达50个网站来说是免费的!

答案 2 :(得分:1)

我同意tvanfosson但是如果你现在需要它,你仍然可以配置应用程序池不要回收。

http://technet.microsoft.com/en-us/library/cc753179(WS.10).aspx

答案 3 :(得分:1)

最好将其作为Windows服务或计划的控制台应用程序。如果您想将其保留为Web应用程序,那么您可以让第三方向您的应用程序发送ping命令以使其保持运行状态。在我当前的客户端,这是通过http://www.pingdom.com/完成的,但还有其他替代方案。