如何在发布到Azure云服务之前预编译Web应用程序

3

我在云服务上使用MVC3 .NET4.5应用程序时,初始加载速度非常慢,当池每20分钟重启时也是如此。现在,我可以延长重启时间,但我认为更好的解决方案是本地预编译所有内容,然后打包并发布到云服务。如何在本地预编译,然后打包预编译代码进行发布?谢谢。

1个回答

4
问题在于随 Azure SDK 一起提供的默认 MSBuild 脚本不会将预编译结果包含到服务包中。因此,预编译应用程序并不是问题,但将预编译结果打包却是一个问题。一种可能的解决方案是按照这里所述,在原地预编译应用程序。
20分钟的空闲超时对于 Web 角色来说意义不大,因此最好将其禁用。接下来你会遇到的问题是,当第一个请求到达时启动 Web 应用程序仍需花费一些时间,因为需要从磁盘加载和 JIT 编译许多代码,解决方法是使用 IIS 的“预热”功能或者简单地从角色OnStart()内部向“localhost”发送请求。

谢谢你。预编译不够简单,这对我来说似乎很合理。也许微软认为本地预编译会违反本地操作系统,而这个操作系统不一定与部署的“osFamily”相同,所以最好将其保留为IL代码。目前,我已经在相关操作上实现了一个保持活动状态的监视器,从外部监视站点,看起来正在工作。你能否更详细地解释一下“热身”/OnStart()的内容……这不是我所了解的东西。再次感谢。 - SamJolly
1
@SamJolly:从未尝试过“热身”,这里有描述http://blogs.iis.net/thomad/archive/2009/10/14/now-available-the-iis-7-5-application-warm-up-module.aspx以及其他无数的帖子。`OnStart()`部分非常简单-您可以使用`WebRequest`向在同一台机器上运行的IIS发送HTTP请求。 - sharptooth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接