如何在 IIS10 中正确自动启动 asp.net 应用程序

How to properly autostart an asp.net application in IIS10

我正在尝试让我的 ASP.NET 应用程序在应用程序池为 运行 时自动启动。

根据网上大量的参考资料,我已经完成了以下工作:

该 Web 应用程序基于 Owin,其 Startup.Configuration() 方法中有一个简单的 log4net 日志记录语句。现在,当重新启动 IIS 时,我看到 w3svc.exe 进程是 运行,所以我知道 StartMode=AlwaysRunning 正在运行。但是日志文件中没有日志消息。

导航到应用程序中的任何 url(即使是不存在的)将启动应用程序并添加日志行。

由于应用程序启动时的实际工作,我非常希望应用程序真正预加载,但我似乎无法完成。

不幸的是,我在搜索此站点时未能找到解决方案。

提前致谢。

为了后代回答我自己的问题,看来我是在正确的轨道上。要让应用程序在 IIS10 中启动(我假设在 IIS 8 中也是如此),您只需要执行以下三个步骤:

  1. 将应用程序池设置为 StartMode=AlwaysRunning 以确保应用程序池的 w3svc.exe 进程始终 运行。
  2. 将相关站点(属于上述池)设置为 preloadEnabled=true
  3. 按照 here 的说明将 Application Initialization 功能安装到 Windows 安装中。

需要注意的一件重要事情是,如果 Application Initialization 任务之前未安装在计算机上,您 必须重新启动计算机 。这是我上次错过的,导致我浪费了很多时间寻找其他东西:(

无论如何,设置这三件事将导致应用程序真正完成初始化,如果您想设置一些计划任务(ea 使用 Quartz NuGet 包),这将特别有用。

顺便请注意,如果您像上面那样设置自动初始化,应用程序也会在关闭超时到期后和应用程序池回收时自动启动。