远程服务器重启后自动重启 IIS 运行的 ASP.NET Core 应用程序不起作用

问题描述 投票:0回答:1

要在远程服务器(Windows 2016 服务器)重新启动后自动重新启动 IIS 运行的 ASP.NET Core 应用程序,我已经执行了这些步骤,但重新启动服务器后,应用程序仍然没有被

ApplicationInitialization
模块自动重新启动,所以每次我需要自己发出第一个请求来启动 asp.net 应用程序。

我所做的步骤

  1. 将应用程序池设置为
    StartMode=AlwaysRunning
  2. 将站点(从高级设置)设置为
    preloadEnabled=true
  3. 将应用程序初始化功能安装到 Windows 安装中。
  4. 在配置编辑器中,在
    web.config
    处的
    system.webServer/applicationInitialization
    中,将
    doAppInitAfterRestart
    设置为
    True
  5. 在配置编辑器中,在
    web.config
    system.webServer/applicationInitialization
    处,添加
    initializationPage "/"
    hostName ""
  6. 在配置编辑器中,在
    web.config
    system.webServer/applicationInitialization
    处,添加
    initializationPage "/about"
    hostNmae "localhost"

奇怪的是,我对本地 PC IIS 服务器执行了相同的步骤和相同的配置设置,自动重新启动过程工作正常,并且我可以看到来自 127.0.0.1 的虚拟请求,因为我使用 Serilog 记录每个请求。

enter image description here

因此

ApplicationInitialization
模块正在我的本地 PC 上运行。

有人知道我在远程服务器上可能还缺少哪些其他东西吗?

或者有什么调试方法可以尝试看看

ApplicationInitialization
模块在远程服务器上是否正常工作?

windows asp.net-core iis
1个回答
0
投票

我上面执行的步骤足以让

ApplicationInitialization
模块适用于自动重新启动 IIS 运行的 ASP.NET Core 应用程序

要找出 ASP.NET 应用程序没有自动重新启动的原因,我启用了失败请求跟踪来调试错误请求,请参阅:此处启用失败请求跟踪

跟踪对 IIS 服务器的请求后,一旦我从 IIS 管理器触发重新启动,

ApplicationInitialization
模块就会向 IIS 服务器发出请求,但该请求无法发送到 ASP.NET 应用程序,因为我设置了 匿名身份验证= Disabledwindowsauthentication=Enabled,这会阻止来自
ApplicationInitialization
模块的请求到达 ASP.NET 应用程序,因为 IIS 已响应 401 状态。开启anonymousauthentication=Enabled后,自动重启现在可以正常工作了。

© www.soinside.com 2019 - 2024. All rights reserved.