我想向客户端的 ASP.NET 应用程序添加计划任务。这些帖子很好地阐述了这个想法:
- https://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/
- What is the Best Practice to Kick-off Maintenance Process on ASP.NET
- "Out of Band" Processing Techiniques for asp.net applications
我的问题有两个部分:首先,如果尽管有缓存事件但没有足够的请求事件,IIS 是否会卸载应用程序?我的客户没有像 stackoverflow 那样享受那么多流量,因此他们不能依赖用户请求来保持应用程序“活跃”。显然,我无法在已卸载的应用程序中安排任务。
其次,如果是这样,是否有办法阻止 IIS 在配置或外部“保持事件”请求之外卸载应用程序?我的客户主机不允许进行太多配置调整,并且保持事件实用程序会引入我试图通过 ASP.NET 缓存解决方案避免的部署复杂性。
非常感谢。
编辑/结论:鉴于问题,TheXenocide 的解决方案是完全正确的。然而,我认为这是一个非常糟糕的问题。偷工减料的诱惑总是若隐若现。我恢复了理智,告诉我的客户使用网站监控工具来保持网站活跃。此外,尽管存在额外的部署麻烦,但计划任务仍在 Windows 服务中进行。
最佳答案
不幸的是,超出了更改超时配置的范围(我相信这在 Web.config 中是可能的,尽管我不知道托管提供商允许什么和不允许什么,大多数都使用中等信任)我不知道不相信除了网络请求之外还有任何其他方法可以阻止应用程序结束。您可能会尝试的一件事可能比在本地计算机上使用某些保持事件服务更简单,可能是向 Session_Start/Session_End 添加一些逻辑,以确保始终至少有一个 session 处于事件状态;您可以使用 WebRequest从您的应用程序中调用您自己的站点的类,它仍然应该启动一个新 session 。
祝你好运,让我们知道你在做什么:)
更新:这些详细信息现在很大程度上取决于您运行的 IIS 版本和 .NET 版本。每个版本的较新版本都有配置“始终运行”应用程序的方法。
关于asp.net - 缓存事件是否会阻止 IIS 卸载 ASP.NET 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/127563/