我正在尝试使用ASP。. NET预编译工具aspnet_compiler.exe用于部署后对站点进行编译。
根据书籍定义,在web机器上运行就地预编译可以改善第一页加载体验。编译工具编译每个ASP。. NET页面,将编译后的版本存储在%WINDIR%Microsoft.NETFrameworkv4.0.30319Temporary
. asp.net中。. NET Files文件夹,就像第一次从浏览器访问每个页面一样。就地预编译可以加快向新部署的ASP发出的第一个请求。. NET页面,因为它减少了运行时执行此步骤的需要。
对我来说,由于某些原因,它没有按照预期的方式工作。
在本机手动运行aspnet_compiler.exe时:
C:WindowsMicrosoft.NETFrameworkv4.0.30319aspnet_compiler.exe -v /7.1 -p C:MyPathToWebSitewww
创建了如下结构的文件夹:
C:WindowsMicrosoft.NETFrameworkv4.0.30319Temporary ASP.NET Files7.1640c1f874be3507b
当我尝试使用浏览器访问网页时,ASP。. NET在同一服务器上的以下文件夹中创建另一个缓存版本:
C:WindowsMicrosoft.NETFrameworkv4.0.30319Temporary ASP.NET Files7.1bc8a1bb342b014d4
可以看到,预编译在两种情况下都有效(手动和IIS),但不知何故,IIS没有看到已经预编译和套现的页面,并试图重新编译所有内容。我无法找出缺失或做错了什么,因为aspnet_compiler.exe对就地编译的参数选项有限。
到目前为止,我在测试/调查期间尝试了以下关于临时ASP。NET缓存:
- 似乎与用户无关,与用户手动运行无关
- 与源/目标IP无关,因为相同的文件夹是在不同子网的不同服务器上创建的
任何想法和帮助感谢。
我也面临同样的问题。只有使用元数据库路径到我的网站解决了这个问题。
aspnet_compiler.exe -m /LM/W3SVC/[site ID]/root
您在第一个文件夹中看到的文件没有被提交。您只将您的站点编译为MSIL,当您第一次访问某些页面时,它被编译为本机图像代码-这些是您在第二个文件夹中看到的文件。您可能需要使用Ngen - http://msdn.microsoft.com/en-us/library/6t9t5wcf(v=vs.110).aspx