我正在尝试使用ASP.NET预编译工具aspnet_compiler.exe在部署后编译站点。
根据书籍定义,在Web机器上运行就地预编译应该可以改善首页加载体验。编译工具编译每个ASP.NET页面,将编译后的版本存储在%WINDIR%\Microsoft.NET\Framework\v4.0.30319\Temporary
ASP.NET Files文件夹中,就像第一次从浏览器访问每个页面一样。就地预编译可以加快对站点上新部署的ASP.NET页面的第一个请求,因为它可以减少运行时需要执行此步骤。
由于某些原因,我无法按预期的方式工作。
在Web机器上本地运行aspnet_compiler.exe时:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /7.1 -p C:\MyPathToWebSite\www
创建了以下结构结构的文件夹:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\7.1\640c1f87\4be3507b
当我尝试使用浏览器访问网页时,ASP.NET会在同一服务器上的以下文件夹中创建另一个缓存版本:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\7.1\bc8a1bb3\42b014d4
正如您所看到的,预编译在两种方案(手动和IIS)中都能正常工作,但是由于某种原因,IIS没有看到已经预编译和兑现的页面,并且尝试再次重新编译所有内容。我无法弄清楚丢失或做错了什么,因为aspnet_compiler.exe具有用于就地编译的有限参数选项。
到目前为止,我已经尝试过关于临时ASP.NET缓存的测试/调查:
任何想法和帮助表示赞赏。
答案 0 :(得分:3)
我遇到了同样的问题。仅使用我的网站的配置数据库路径解决了它。
aspnet_compiler.exe -m /LM/W3SVC/[site ID]/root
答案 1 :(得分:-1)
您在第一个文件夹中看到的文件未被jitted。您只将您的站点编译为MSIL,当您第一次访问某个页面时,它会被编译为本机映像代码 - 这些是您在第二个文件夹中看到的文件。 您可能想要使用Ngen - http://msdn.microsoft.com/en-us/library/6t9t5wcf(v=vs.110).aspx