.NET Core 3 - IIS - 应用程序初始化不起作用
.NET Core 3 - IIS - Application Initialization doesn't work
我一直在关注 IHostedService 文档,以便 运行 使用 .NET Core MVC 框架的后台任务。
我希望该服务在 IIS 中自动启动,但是它不起作用。
我做了以下事情:
- 在 Windows 服务器上安装了应用程序初始化功能
- 在网站上将 "Preload" 设置为 true
- 在 AppPool 上,设置 "AlwaysRunning"
- 在 AppPool 上,将 "Idle Timeout" 设置为 0
- 在 AppPool 上,确保它在 "No Managed Code"
下 运行ning
- 在 ApplicationInitialization 配置中,设置以下标志:
- doAppInitAfterRestart = True
- skipManagedModules = 假
- 添加了一个 initializationPage 键,=“/start”(一个空白的 MVC 调用,只是为了启动应用程序)
奇怪的是,这些步骤适用于全新 Windows 服务器安装,但不适用于我要使用的服务器。
在有问题的服务器上,我可以看到 w3wp 进程尝试 启动 dotnet 进程(通过 Procmon),但实际上 运行 没有任何 dotnet核心代码,直到我从浏览器发送一个真正的 HTTP 请求。
我读过许多 GitHub 帖子,它们说无论确切的 IIS 版本如何,这都应该有效 - 还会发生什么?
我为此竭尽全力,包括取消注册全局模块、手动修改 DLL、更改 applicationHost.config 以及清除各种内部 IIS 配置。 None 将使应用程序自动启动。
然后我采取了核心方法:重新安装 IIS(在 uninstall/reinstall 之间重新启动)
这当然意味着丢失有关您现有托管应用程序的一些信息(例如绑定信息 - 如果您看到所有站点在重新安装后都是 "Stopped",那是因为不再有任何绑定),以及在重新安装后我还必须:
Reinstall/Repair 网络部署 3.5
Reinstall/Repair ASP.NET 核心托管捆绑包(对于每个受影响的版本)
Reinstall/Repair .NET Core SDK
然后一切都按预期开始工作。我的大多数 IIS 站点和设置保持不变。我没有像其他帖子中常见的那样重新安装 WAS(激活服务)。
更新:我遇到过 AppInit 在某些服务器上停止工作的情况,即使在使用上述步骤临时解决它后也是如此 - 我在这里为它打开了一个错误:https://github.com/dotnet/aspnetcore/issues/19509
要使网站上的“预加载”设置为真,您还需要在网站上激活匿名身份验证
对于以后访问此页面的任何人。我刚刚开始工作,我最终发现无论你想点击什么端点来“预加载”你的应用程序都必须是匿名的。一旦我这样做了,我的就开始成功地工作了。
我一直在关注 IHostedService 文档,以便 运行 使用 .NET Core MVC 框架的后台任务。
我希望该服务在 IIS 中自动启动,但是它不起作用。
我做了以下事情:
- 在 Windows 服务器上安装了应用程序初始化功能
- 在网站上将 "Preload" 设置为 true
- 在 AppPool 上,设置 "AlwaysRunning"
- 在 AppPool 上,将 "Idle Timeout" 设置为 0
- 在 AppPool 上,确保它在 "No Managed Code" 下 运行ning
- 在 ApplicationInitialization 配置中,设置以下标志:
- doAppInitAfterRestart = True
- skipManagedModules = 假
- 添加了一个 initializationPage 键,=“/start”(一个空白的 MVC 调用,只是为了启动应用程序)
奇怪的是,这些步骤适用于全新 Windows 服务器安装,但不适用于我要使用的服务器。
在有问题的服务器上,我可以看到 w3wp 进程尝试 启动 dotnet 进程(通过 Procmon),但实际上 运行 没有任何 dotnet核心代码,直到我从浏览器发送一个真正的 HTTP 请求。
我读过许多 GitHub 帖子,它们说无论确切的 IIS 版本如何,这都应该有效 - 还会发生什么?
我为此竭尽全力,包括取消注册全局模块、手动修改 DLL、更改 applicationHost.config 以及清除各种内部 IIS 配置。 None 将使应用程序自动启动。
然后我采取了核心方法:重新安装 IIS(在 uninstall/reinstall 之间重新启动)
这当然意味着丢失有关您现有托管应用程序的一些信息(例如绑定信息 - 如果您看到所有站点在重新安装后都是 "Stopped",那是因为不再有任何绑定),以及在重新安装后我还必须:
Reinstall/Repair 网络部署 3.5
Reinstall/Repair ASP.NET 核心托管捆绑包(对于每个受影响的版本)
Reinstall/Repair .NET Core SDK
然后一切都按预期开始工作。我的大多数 IIS 站点和设置保持不变。我没有像其他帖子中常见的那样重新安装 WAS(激活服务)。
更新:我遇到过 AppInit 在某些服务器上停止工作的情况,即使在使用上述步骤临时解决它后也是如此 - 我在这里为它打开了一个错误:https://github.com/dotnet/aspnetcore/issues/19509
要使网站上的“预加载”设置为真,您还需要在网站上激活匿名身份验证
对于以后访问此页面的任何人。我刚刚开始工作,我最终发现无论你想点击什么端点来“预加载”你的应用程序都必须是匿名的。一旦我这样做了,我的就开始成功地工作了。