【问题标题】:Run Application_Start immediately when application pool/Application restarts in IIS当应用程序池/应用程序在 IIS 中重新启动时立即运行 Application_Start
【发布时间】:2018-01-31 22:22:31
【问题描述】:

我想要的是,只要应用程序池/应用程序在 IIS 中重新启动,我的 Global.asax(或任何其他代码)中的 Application_Start 就会自动运行。 Application_Start 在第一个请求时触发,但我不想等待第一个请求,但我想在部署和启动 Web API 时执行一些操作。

那么,有没有什么方法可以通过代码(不在 IIS 级别)实现上述目标?

【问题讨论】:

    标签: asp.net .net asp.net-mvc api iis


    【解决方案1】:

    我不确定,但您可以尝试为您的应用程序池设置“启动模式 = 始终运行”。

    编辑 1:这应该强制 IIS 直接加载/重新加载您的应用程序池,从而触发 Global.asax 的 Application_Start


    编辑 2

    只是为了说清楚,这就是我的意思。

    1. 转到应用程序池
    2. 右键单击您的应用程序池
    3. 进入高级设置
    4. 将 OnDemand 更改为 AlwaysRunning

    是的,这不是基于代码的。但据我所知,您必须配置应用程序池才能实现您想要的。

    也许您也想检查一下(包含基于代码的应用程序池配置示例):Application Pool Defaults

    【讨论】:

    • 不确定您指的是哪个“启动模式 = 始终运行”。您的意思是应用程序池的基本设置中的“立即启动应用程序池”选项。这对我没有帮助,因为它不会触发 App_Start。如果您指的是 IIS 应用程序池中的任何其他特定选项,请告诉我。
    • 转到“应用程序池>>(您的应用程序池)>>高级设置>>常规”。在那里您可以设置应用程序池启动模式。
    • 如果您指的是“自动启动”,可以设置为 True/False。这不会触发任何事件。事实上,它使 API 能够在第一个请求将触发 Application_Start 的任何时候接受请求。请您的cmets
    • 我更新了我的答案。检查上面的编辑 2 部分。希望这会有所帮助
    • 我觉得你说的就是我想要的。但是我在我的应用程序池高级设置中没有看到该选项,也许我缺少一些 IIS 模块。有什么想法吗?
    猜你喜欢
    • 2012-05-24
    • 1970-01-01
    • 2012-03-28
    • 2023-04-01
    • 2012-08-04
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多