好吧,假设我有一个 Web 应用程序,它绝对必须执行某种启动并且必须无限期地保持运行,而不管它从客户端接收到的通信(因为它是一个基于推送的系统)
现在为了测试,我一直将它作为 Windows 服务托管,这很棒,因为它允许我有一个硬入口点到应用程序,我可以在其中进行引导并启动和运行服务
接下来,我试图将它转移到 IIS 世界中,这样我就可以面向外部世界提供这项服务......我遇到了一个障碍......我没有任何硬入口点我可以引导应用程序,但 global.asax 除外,据我所知,它仅在客户端调用服务器时调用
有没有更好的区域我可以放置应用程序的入口并在不等待客户端连接到它的情况下引导它?这个区域是只调用一次还是会在应用程序超出范围时定期调用(可以这么说)?正如我所说,应用程序必须始终保持运行状态
最佳答案
Is there a better area I can put an entrance to the application and get it bootstrapped without waiting for a client to connect to it?
是的,有。你可以warm up IIS .
And is this area only called once or is it going to be called periodically as the application falls out of scope (so to speak)?
这取决于您使用的是 Global.asax 中的哪种方法。 Application_Start
在每次应用启动时运行一次。
Like I said, the app has to remain running at all times
小心,这里有龙。这取决于它的重要性。如果你需要绝对的可靠性,你必须使用负载均衡器并且至少有一个其他的重复服务。其他需要考虑的事情,应用程序池需要不时回收。 IIS、操作系统、您的应用程序有错误、需要安装更新、网络设备出现故障、断电等等。
关于c# - IIS 的 .Net Web 应用程序应用程序启动工作流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16349110/