IIS 和托管的 ASP.Net 应用程序

Posted

技术标签:

【中文标题】IIS 和托管的 ASP.Net 应用程序【英文标题】:IIS & hosted ASP.Net application 【发布时间】:2013-09-26 14:01:47 【问题描述】:

假设我有一个由 IIS 托管的 ASP.Net Web 应用程序。除了服务请求的功能之外,我还添加了一个按指定时间间隔定期执行的操作,例如每 30 分钟一次。此操作与外部 Web 请求无关,例如,其目的是删除无用的日志文件。

问题是:如果长时间(一天、一周)没有人访问我的网站,IIS 是否仍会使我的应用程序保持活动状态,并且上述操作将每 30 分钟执行一次。或者如果长时间没有请求,IIS 会关闭/暂停应用程序的活动?

也许这是一个蹩脚的问题,但我没有找到明确的答案。

【问题讨论】:

如何每 30 分钟执行一次操作? 您的额外操作可能应该安排为作为 Windows 后台进程/服务运行,而不是 IIS 或 IIS Web 应用程序的一部分。 @Derek 我想过这个,但是这个功能的工作量和重要性相当低。我不确定是否值得单独的专用 Windows 服务。 【参考方案1】:

IIS 不会关闭,但 IIS 会在您的应用程序闲置一段时间后回收。

因此,如果您的应用负责触发事件,那么如果您的应用未运行(已回收),它就不会运行。

要么让服务偶尔访问您的网站,要么在服务器上设置计划任务(如果您可以访问机器)。

如果您使用共享主机,则必须检查他们的功能,看看他们是否有类似的东西。

另外,如果您只是想删除日志文件或一些琐碎且时间不敏感的事情(因为除非有人访问您的网站,否则您不会有日志),您可以在Application_Start 中执行您的操作。这甚至会在 IIS 重新启动您的应用程序时触发。

【讨论】:

感谢您为我指明正确的方向。我搜索了“iis 应用程序回收”,这似乎正是我想要的。

以上是关于IIS 和托管的 ASP.Net 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 IIS 之外托管 ASP.NET 网站吗?

ASP.NET 获取IIS应用程序池的托管管道模式

具有个人帐户和托管 ASP.NET Core 的 Blazor WebAssembly 应用程序 - IIS - SQLLocalDB 15.0 找不到指定的资源语言 ID

在 IIS 中托管 ASP Net Core 应用程序时无限页面加载

ASP.NET Core部署系列一:发布到IIS上

如何使用 HTTP 连接通过托管在 IIS 上的 ASP.NET 成员身份保护 ASP.NET Web API [重复]