我试图让我的ASP.NET应用程序在应用程序池运行时自动启动。
根据网上的大量参考资料,我已经完成了以下工作:
StartMode=AlwaysRunning
preloadEnabled=true
Application Initialization
功能安装到Windows安装<applicationInitialization>
节点添加到web.config的<system.webServer>
节点 Web应用程序基于Owin,并且在其Startup.Configuration()
方法中有一个简单的log4net日志记录语句。现在重新启动IIS时,我看到w3svc.exe进程正在运行,所以我知道StartMode=AlwaysRunning
正在运行。但是,日志文件中没有日志消息。
导航到应用程序中的任何URL(甚至是不存在的URL)将启动应用程序并添加日志行。
由于在应用程序启动时所做的实际工作,我真的希望应用程序真正预加载,但我似乎无法完成它。
搜索此网站遗憾的是我无法找到解决方案。
提前致谢。
答案 0 :(得分:16)
为了回答我自己的后代问题,似乎我走在正确的轨道上。要让应用程序在IIS10中启动(我还假设在IIS 8中),您只需要以下三个步骤:
StartMode=AlwaysRunning
,以确保应用程序池始终运行w3svc.exe进程。preloadEnabled=true
Application Initialization
功能安装到Windows安装中
醇>
需要注意的一件重要事情是,如果以前未在计算机上安装Application Initialization
任务,则必须重新启动计算机。这是我最后一次错过的,导致浪费了相当多的时间寻找其他东西:(
无论如何,设置这三件事会导致应用程序实际完成初始化,如果您想设置一些调度任务(例如使用Quartz NuGet包),这将非常有用。
请注意,如果您设置如上所述的自动初始化,应用程序也将在关闭超时到期后以及应用程序池回收时自动启动。