要在远程服务器(Windows 2016 服务器)重新启动后自动重新启动 IIS 运行的 ASP.NET Core 应用程序,我已经执行了这些步骤,但重新启动服务器后,应用程序仍然没有被
ApplicationInitialization
模块自动重新启动,所以每次我需要自己发出第一个请求来启动 asp.net 应用程序。
我所做的步骤
StartMode=AlwaysRunning
。preloadEnabled=true
。web.config
处的 system.webServer/applicationInitialization
中,将 doAppInitAfterRestart
设置为 True
web.config
的 system.webServer/applicationInitialization
处,添加 initializationPage "/"
、hostName ""
web.config
的 system.webServer/applicationInitialization
处,添加 initializationPage "/about"
、hostNmae "localhost"
奇怪的是,我对本地 PC IIS 服务器执行了相同的步骤和相同的配置设置,自动重新启动过程工作正常,并且我可以看到来自 127.0.0.1 的虚拟请求,因为我使用 Serilog 记录每个请求。
因此
ApplicationInitialization
模块正在我的本地 PC 上运行。
有人知道我在远程服务器上可能还缺少哪些其他东西吗?
或者有什么调试方法可以尝试看看
ApplicationInitialization
模块在远程服务器上是否正常工作?
我上面执行的步骤足以让
ApplicationInitialization
模块适用于自动重新启动 IIS 运行的 ASP.NET Core 应用程序
要找出 ASP.NET 应用程序没有自动重新启动的原因,我启用了失败请求跟踪来调试错误请求,请参阅:此处启用失败请求跟踪
跟踪对 IIS 服务器的请求后,一旦我从 IIS 管理器触发重新启动,
ApplicationInitialization
模块就会向 IIS 服务器发出请求,但该请求无法发送到 ASP.NET 应用程序,因为我设置了 匿名身份验证= Disabled 和 windowsauthentication=Enabled,这会阻止来自 ApplicationInitialization
模块的请求到达 ASP.NET 应用程序,因为 IIS 已响应 401 状态。开启anonymousauthentication=Enabled后,自动重启现在可以正常工作了。