Asp.net core .NET Core 3-IIS-应用程序初始化不';行不通
为了使用.NET核心MVC框架运行后台任务,我一直在遵循IHostedService文档 我希望该服务在IIS中自动启动,但是,它不工作 我已经做了以下工作:Asp.net core .NET Core 3-IIS-应用程序初始化不';行不通,asp.net-core,iis,background-process,asp.net-core-3.0,Asp.net Core,Iis,Background Process,Asp.net Core 3.0,为了使用.NET核心MVC框架运行后台任务,我一直在遵循IHostedService文档 我希望该服务在IIS中自动启动,但是,它不工作 我已经做了以下工作: Windows服务器上安装的应用程序初始化功能 在网站上将“Preload”设置为true 在应用程序池上,设置“AlwaysRunning” 在AppPool上,将“空闲超时”设置为0 在AppPool上,确保它在“无托管代码”下运行 在ApplicationInitialization配置中,设置以下标志: doAppInitAft
- Windows服务器上安装的应用程序初始化功能
- 在网站上将“Preload”设置为true
- 在应用程序池上,设置“AlwaysRunning”
- 在AppPool上,将“空闲超时”设置为0
- 在AppPool上,确保它在“无托管代码”下运行
- 在ApplicationInitialization配置中,设置以下标志:
- doAppInitAfterRestart=True
- skipManagedModules=False
- 添加了一个initializationPage键=“/start”(一个仅用于启动应用程序的空白MVC调用)
我读过很多GitHub线程,它们说无论IIS的确切版本如何,这都应该可以工作——还有什么可能发生的呢 我为此付出了极大的努力,包括注销全局模块、手动修改DLL、更改applicationHost.config,以及取消各种内部IIS配置。没有人会让应用程序自动启动 然后我采用了核心方法:重新安装IIS(在卸载/重新安装之间重新启动) 这当然意味着丢失一些关于您现有托管应用程序的信息(例如绑定信息-如果您在重新安装后看到您的所有站点都“停止”,这是因为没有绑定连接了),重新安装后,我还必须:
- 重新安装/修复Web Deploy 3.5
- 重新安装/修复ASP.NET核心托管捆绑包(针对每个受影响的版本)
- 重新安装/修复.NET核心SDK
更新:我曾经遇到过这样的情况,AppInit在某些服务器上停止工作,甚至在使用上述步骤暂时解决它之后——我在这里为它打开了一个错误:要在网站上将“Preload”设置为true才能工作,您还需要在网站上为将来访问此页面的任何人激活匿名身份验证。我刚刚开始工作,我最终发现无论你想点击哪个端点来“预加载”你的应用程序都必须是匿名的。一旦我这样做了,我的工作就成功了。这让我想哭。几个月来,我一直在犯同样的错误,因为我一直在胡思乱想。现在我必须说服我的老板让我在我们所有的服务器上重新安装IIS。最终,这可能是IIS的问题,全局模块冲突-我猜prod服务器上的安装过程通常是随意的(在IIS上安装.NET核心模块,然后可能是WebSocket,然后可能是其他东西,然后是应用程序初始化)-这将使MSFT难以复制,通常,他们没能告诉我我正面临着本地机器的确切问题。不确定冲突的全局模块是什么…应用程序初始化无法与IISExpress一起工作(大多数扩展没有内置在其中)-尽管在本地计算机上完全安装IIS应该可以工作,但是在桌面上重新安装这些包可能会引起更大的麻烦,而不是它的价值感谢您提出的这个问题。我完全没有意识到应用程序初始化功能需要改进。