缓存活动是否阻止IIS卸载ASP.NET应用程序?
时间:2020-03-06 14:39:58 来源:igfitidea点击:
我想将计划任务添加到客户端的ASP.NET应用程序。这些帖子很好地涵盖了这个想法:
- http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/
- 在ASP.NET上启动维护过程的最佳实践是什么
- asp.net应用程序的"带外"处理技术
我的问题分为两部分:首先,如果尽管有Cache活动,但没有足够的请求活动,IIS是否将卸载应用程序?我的客户所享受的流量不如stackoverflow那样多,因此他们不能依靠用户请求来保持应用程序"活动"。显然,我无法在已卸载的应用中安排任务。
其次,如果是这样,是否有办法防止IIS在配置或者外部"保持活动"请求之外卸载应用程序?我的客户的主机不允许进行太多的配置调整,并且"保持活动状态"实用程序引入了我试图通过ASP.NET Cache解决方案避免的部署复杂性。
谢谢一堆。
编辑/结论:给定问题,TheXenocide的解决方案是完全正确的。但是,我认为这是一个非常糟糕的问题。偷工减料的诱惑总是隐约可见。我已经恢复了理智,并告诉客户使用网站监视工具来使网站保持活动状态。此外,尽管存在额外的部署麻烦,但计划的任务仍在Windows服务中进行。
解决方案
不幸的是,超出了更改超时配置的范围(我相信这在Web.config中是可能的,尽管我不知道在托管提供程序上允许和不允许的内容,其中大多数使用中信任)还有其他方法可以阻止应用程序终止于Web请求之外。我们可能尝试做的一件事可能比在本地计算机上使用一些保持活动服务要简单一些,这可能是向Session_Start / Session_End添加一些逻辑,以确保始终至少有一个会话处于活动状态。我们可以在应用程序中使用WebRequest类来调用我们自己的站点,并且该站点仍应开始新的会话。
祝我们好运,并让我们知道所作所为:)
更新:这些详细信息现在很大程度上取决于我们正在运行的IIS版本和.NET版本。每个版本的较新版本都具有配置"始终运行"应用程序的方法。