是否可以在已停止的IIS 6站点上预编译ASP.Net网站?

时间:2010-07-08 12:27:07

标签: c# .net asp.net compiler-construction iis-6

我在IIS上有2个站点,一个是实时站点,另一个是仅在实时站点上进行维护时启动的站点。

在部署方案中,我停止实时站点和START维护站点,以便用户收到一条友好的消息,告知升级。

我唯一的问题是,当我启动现场网站时,它显然需要JIT,这可能需要3分钟。

在我向用户发布这个JIT之前,有没有这个JIT?

编辑:只是为了澄清一下,这个网站是一个CMS,所以下面标记的答案对我来说很有用,因为只有一页要编译。

由于

4 个答案:

答案 0 :(得分:5)

看起来你需要使用NGen ......

  

原生图像生成器(Ngen.exe)   是一个改善的工具   托管应用程序的性能。   Ngen.exe创建本机映像   是包含已编译的文件   特定于处理器的机器代码,以及   将它们安装到本机映像中   缓存在本地计算机上。该   运行时可以使用来自的本机映像   使用即时缓存来缓存   (JIT)编译器编译原始   组装

预编译网站以进行部署,使用固定名称,将解决方案部署到服务器,然后在bin中使用所有程序集

MSDN article on NGen

我应该补充一点,通过预先生成这样的本机代码,您可能会失去运行时基于当前系统性能(如内存和寄存器使用)执行的一些优化。这甚至可能导致网站运行速度比JIT更慢。 Microsoft建议您在接近正常使用条件下的条件下在目标平台上尝试NGen和JIT方法。

答案 1 :(得分:2)

我能想到的唯一方法是更改​​已停止站点上的绑定,启动它,运行页面,应用绑定,关闭维护站点并启动实时站点。

答案 2 :(得分:0)

我不相信有任何开箱即用的东西可以做到这一点。事实上,几个月前他们刚刚发布的IIS7 warmup module基本上只是爬行并点击你的页面一次“热身”。

如果我是你,我会写一个小程序来制作每页的WebRequests。可能会有一个第三方工具可以快速轻松地完成这项工作,所以它仍然是一个很好的问题......

答案 3 :(得分:0)

您可以使用aspnet_compiler.exe预编译您的网站。您可以从命令行使用它,也可以从nant脚本中调用它。

[aspnet_compiler] [1]

[1]:http://msdn.microsoft.com/en-us/library/ms229863%28VS.80%29.aspx />