.NET Core 3 - IIS - 应用程序初始化不起作用

.NET Core 3 - IIS - Application Initialization doesn't work

我一直在关注 IHostedService 文档,以便 运行 使用 .NET Core MVC 框架的后台任务。

我希望该服务在 IIS 中自动启动,但是它不起作用。

我做了以下事情:

奇怪的是,这些步骤适用于全新 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

要使网站上的“预加载”设置为真,您还需要在网站上激活匿名身份验证

对于以后访问此页面的任何人。我刚刚开始工作,我最终发现无论你想点击什么端点来“预加载”你的应用程序都必须是匿名的。一旦我这样做了,我的就开始成功地工作了。