我正在一个ASP.net MVC项目上,我注意到在发布Web应用程序时,IIS不会在命中控制器之前不会为视图建立缓存或任何东西。因此,换句话说,如果访客恰好是重新发布整个项目后的第一个访问该页面的人,则可能需要很长时间才能加载该页面。
要解决这个问题,我必须手动在项目中的视图上一次击中每个端点。当该项目首次启动时,这是一个简单的任务,但是正如您现在可以想象的那样,这是无法维护的。
我的问题是如何对项目中带有视图的端点执行一批curl命令?我不确定从哪里开始。是否有编程方式来创建批处理命令并将其附加到AfterPublish事件?
答案 0 :(得分:0)
您遇到的行为是由于IIS中的应用程序池启动模式引起的。与其实施AfterPublish事件,不如将您的应用程序池配置为执行您希望执行的操作。
开始模式
一些Web应用程序需要大量时间才能启动。默认情况下,IIS仅在收到第一个Web应用程序请求时启动工作进程。因此,对于需要较长时间初始化的Web应用程序,用户可能会看到响应缓慢的情况。
对于此类应用程序,最好在IIS启动后立即启动工作进程。应用程序池具有startMode设置,当将其设置为AlwaysRunning时,它将在IIS启动后立即启动应用程序池的工作进程。
IIS 8在“应用程序池设置”用户界面中为您提供了此设置。
来源:https://blogs.msdn.microsoft.com/vijaysk/2012/10/09/iis-8-whats-new-application-pool-settings/
如果您真的想在发布网站后运行这些操作,则必须了解有关Visual Studio构建过程的更多信息。该链接可以帮助您入门:https://docs.microsoft.com/en-ca/visualstudio/msbuild/how-to-extend-the-visual-studio-build-process?view=vs-2017