3

我正在尝试使用 ASP.NET 预编译工具 aspnet_compiler.exe 在部署站点后对其进行编译。

根据书籍定义,在 Web 机器上运行就地预编译应该可以改善首页加载体验。编译工具编译每个 ASP.NET 页面,将编译后的版本存储在%WINDIR%\Microsoft.NET\Framework\v4.0.30319\TemporaryASP.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 缓存方面尝试了以下操作:

  • 似乎与用户无关,无论用户手动运行什么
  • 与源/目标 IP 无关,因为在不同子网的不同服务器上创建了相同的文件夹

任何想法和帮助表示赞赏。

4

2 回答 2

4

我遇到了同样的问题。只有使用我网站的元数据库路径才能解决它。

aspnet_compiler.exe -m /LM/W3SVC/[site ID]/root
于 2015-08-14T12:41:01.540 回答
-1

您在第一个文件夹中看到的文件未经过处理。您只需将您的网站编译为 MSIL,当您第一次访问某个页面时,它会被编译为本机图像代码 - 这些是您在第二个文件夹中看到的文件。您可能想使用 Ngen - http://msdn.microsoft.com/en-us/library/6t9t5wcf(v=vs.110).aspx

于 2014-05-19T17:54:38.290 回答