在将我们的 ASP.NET(主要是带有 AJAX 的表单)应用程序部署到一台特定的生产机器之后,重新编译过程(其中 w3wp.exe 为每个 aspx 或 ascx 文件调用 CSC.exe)会持续数小时。因此,Web 应用程序的性能非常缓慢。当部署到其他生产机器时,这些完全相同的应用程序会在几分钟内完成编译。
这些 aspx 编译只在 ProcExp 中可见一秒钟,它们使用的命令行涉及一个在编译后立即删除的参数文件,因此我很难监控正在编译哪些文件,或者查看是否是同一个文件正在编译不止一次。有什么方法可以记录编译过程,以便我可以尝试找出这台机器行为异常的原因?
我知道我们可以使用 aspnet_compiler.exe 来预编译整个应用程序,但是将其纳入构建和部署工作流程(TFS 2010 加上 OctopusDeploy)会有点痛苦。此外,我在命令行“手动”进行预编译的尝试不起作用。预编译成功,但是当 IIS 指向目标目录时,对任何文件的任何请求都会引发此类错误:
异常类型:HttpException
异常消息:文件“/default.aspx”尚未预编译,无法请求。
ETA:这就是我想从这个问题中得到的
- 我应该检查什么来确定为什么这台机器要花这么多时间编译?
- 我可以做些什么来记录正在编译的文件是什么时候?