我创建了一个非常小的监控网络应用程序,定期轮询其他网站以检查它们是否还活着。如果他们不是我发送的电子邮件,我可以做出反应(例如,如果网站回复503)
但是我的问题是当AppPool回收时,监视器web-app被关闭,并且它永远不会再次启动,因为它没有请求。
有没有办法确保它在重新启动,重启服务器或类似服务器之后再次启动?
目前它在global.asax Application_Start中启动后台线程,然后该线程负责通过轮询以及其他站点来保持监视器web应用程序的活动。
这样它每隔一段时间就会得到一个HTTP请求。然而,这实际上只有在它实际启动时才能保持活着。
我已经阅读了一些有关IIS预热模块的内容,但该网站托管在我没有影响的服务器上,所以这是不可能的。
该站点使用ASP.Net 4.0构建,并在IIS 7.5服务器上运行。
希望你有个主意: - )
答案 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/完成的,但还有其他替代方案。