c# - ASP.NET 不断编译

标签 c# asp.net windows-server-2012 asp.net-4.5

将我们的 ASP.NET(主要是 AJAX 形式)应用程序部署到一台特定的生产机器后,重新编译过程(其中 w3wp.exe 为每个 aspx 或 ascx 文件调用 CSC.exe)持续数小时。因此,网络应用程序的性能非常缓慢。这些完全相同的应用程序在部署到其他生产机器时会在几分钟内完成编译。

这些aspx编译只在ProcExp中可见一秒钟,而且它们使用的命令行涉及一个编译后立即删除的参数文件,所以我很难监控正在编译哪些文件,或者看看是否同一个文件被多次编译。有没有什么方法可以记录编译过程,这样我就可以找出为什么这台机器运行不正常?

我知道我们可以使用 aspnet_compiler.exe 来预编译整个应用程序,但是将其纳入构建和部署工作流程(TFS 2010 加 OctopusDeploy)会有点麻烦。此外,我尝试在命令行“手动”进行预编译的尝试不起作用。预编译成功,但是当IIS指向目标目录时,对任何文件的任何请求都会抛出这种错误:

Exception type: HttpException

Exception message: The file '/default.aspx' has not been pre-compiled, and cannot be requested.

  1. 有什么我应该检查以确定为什么这台机器花费这么多时间编译?
  2. 我可以做些什么来记录哪些文件在何时被编译?

最佳答案

我们使用预编译作为解决此问题的唯一方法,否则您将看到多个 msbuild.exe 进程。即时编译无法为您提供所需的结果。使用 Visual Studio 2012 或更高版本,创建发布配置文件然后将该配置文件提交到源代码管理非常容易,这样您就不必一次又一次地执行此操作。此外,您将应用程序性能不佳归咎于构建过程,我建议您研究一下如何优化您的应用程序本身。就像我们一样,我们也有一个低迷的性能,然后我们切换到 SessionPageStatePersister,这改善了很多性能问题。我会推荐以下很棒的视频,只需浏​​览它们并检查您已经完成了多少以及可以完成多少。

Performance Optimize Your ASP.NET Web App

Deep Dive: Improving Performance in Your ASP.NET App

关于c# - ASP.NET 不断编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33683791/

相关文章:

c# - 使用 JS 函数调用的 MVC3 中的分页问题

.net - 在 Windows 窗体面板中查找控件

c# - 从 ASP.net 运行 Windows 计划任务

mysql - 如何访问我新设置的 MySQL 数据库(获取 "Domain is currently unable to handle this request.")

solr - 接受到在 Windows Server 2012 上运行的 Solr/Jetty 实例的远程连接

C# 浮点精度

c# - "Data type mismatch in criteria expression"将记录从 C# 保存到 Access

c# - 选择装配体时工具箱找不到零部件

c# - 如何在链接按钮的 OnClientClick 中调用 java 脚本函数(在 .cs 中)?

asp.net - 在 Windows Server 2012 的 Azure 启动任务中安装功能