Cor*_*te5 6 iis background-process asp.net-core asp.net-core-3.0
我一直在关注IHostedService文档,以便使用 .NET Core MVC 框架运行后台任务。
我希望该服务在 IIS 中自动启动,但是,它不起作用。
我做了以下工作:
奇怪的是,这些步骤适用于全新的 Windows Server 安装,但不适用于我想要使用的服务器。
在有问题的服务器上,我可以看到 w3wp 进程尝试启动 dotnet 进程(通过 Procmon),但它实际上并没有运行任何 dotnet 核心代码,直到我从浏览器发送一个真正的 HTTP 请求。
我已经阅读了许多 GitHub 线程,它们说无论确切的 IIS 版本如何,这都应该可以工作——还有什么可能发生?
编辑 2022:看起来以下仍然有效,但间歇性失败。正确的解决方案如上所述 - 您还需要在 IIS 站点的身份验证中启用“匿名身份验证” 。
Windows 身份验证仍然可以并行启用,.NET Core 允许您至少在程序启动后控制身份验证模式。
这似乎允许 IIS COM 进程访问一个未知文件,该文件最终通过运行应用程序池的帐户传递 - 看来 AppInit 是在进程外针对此初始请求进行操作的(因此可能是某些本地帐户或虚拟临时帐户) 。
我发现 .NET Core 的 GC 设置对于这个特定问题没有影响。
我为此付出了极大的努力,包括取消注册全局模块、手动修改 DLL、更改 applicationHost.config 以及清除各种内部 IIS 配置。没有一个能让应用程序自动启动。
然后我采取了核心方法:重新安装 IIS(在卸载/重新安装之间重新启动)
这当然意味着丢失有关现有托管应用程序的一些信息(例如绑定信息 - 如果您在重新安装后看到所有站点都“已停止”,那是因为不再附加绑定),并且在重新安装后我还必须:
重新安装/修复 Web Deploy 3.5
重新安装/修复 ASP.NET Core 托管捆绑包(对于每个受影响的版本)
重新安装/修复 .NET Core SDK
然后一切开始按预期进行。我的大部分 IIS 站点和设置都保持不变。我不需要像其他帖子中常见的那样重新安装 WAS(激活服务)。
更新:我遇到过 AppInit 在某些服务器上停止工作的情况,即使使用上述步骤临时解决它之后 - 我在这里打开了一个错误: https: //github.com/dotnet/aspnetcore/issues/19509
| 归档时间: |
|
| 查看次数: |
1468 次 |
| 最近记录: |