【问题标题】:COMPILATION debug=false is killing my ASP.NET siteCOMPILATION debug=false 正在杀死我的 ASP.NET 站点
【发布时间】:2013-12-13 18:24:39
【问题描述】:

我有一个大型(对我而言)ASP.NET (4.5 Framework) 应用程序,在 VS2012 中开发和发布时运行良好。

我已经从 VS2012 升级到 VS2013,我打开解决方案没有问题,它在本地运行良好(在 IIS Express 上)。

我不知道这是否是一个红鲱鱼,但我第一次使用 NuGet 更新 AJAX 控件工具包(及其依赖项),它似乎已经工作了。

当我将站点发布(文件系统发布)到我们的 Web 服务器(Windows Server 2012 中的 IIS 8)时,它加载正常,直到我将 <compilation defaultLanguage="vb" debug="true" targetFramework="4.5"> 更改为 debug="false"
当我这样做时,该站点像猪一样运行,有时页面甚至无法加载,并且其 IIS 工作进程使 CPU 达到峰值并保持不变,并以 % 的速度增长,直到它基本上消耗了所有 CPU。

编辑:这发生在服务器和我的 PC (IIS Express) 上

此测试站点的 AppPool 使用与我们实际站点的 AppPool 相同的设置运行。注意:

  • 启用 32 位应用程序:是的
  • .NET 框架版本:v4.0
  • 托管管道模式:集成

我希望您需要更多信息,但老实说,我不知道从哪里开始,我不想被不必要的细节淹没。
提前谢谢你

编辑:我真的应该提到这一点:
该站点在发布模式下发布期间进行了预编译。在过去发布之前,我从来不需要在我的开发环境中更改为 debug=false。

我的解决方案中的每个项目都得到了这个: (0,0): warning : The following assembly has dependencies on a version of the .NET Framework that is higher than the target and might not load correctly during runtime causing a failure: [projectname], Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. The dependencies are: Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a. You should either ensure that the dependent assembly is correct for the target framework, or ensure that the target framework you are addressing is that of the dependent assembly.

编辑:看来我继承的这个解决方案是一个网站而不是应用程序。我不知道这是否会起作用。

【问题讨论】:

  • 我不相信你描述的变化会导致你描述的症状。如果您更改了 web.config 并点击了刷新,是的,您可能会延迟一段时间,因为站点/应用程序池组合可能正在重建/回收,但还没有达到您描述的程度。一个问题是您为什么要在调试模式下进行部署,然后再将其关闭,但这是另一天的问题!
  • 是否有任何内容写入 Web 服务器上的事件日志?
  • 尝试预编译——并使用 web.config 的 debug mode='false' 将您的项目设置为发布模式,它应该可以正常工作。
  • 这是一个很好的起点。您是否已经在服务器上安装了 .net framework 4.5?您是否针对 vs 中的所有项目属性下的完整 .net 4.5 框架?还是只是“轻量级”客户端?
  • 看起来你现在走在正确的轨道上,除了配置问题之外,唯一可能的情况是一些条件代码,它查看“调试”标志并且在它设置为 true。

标签: asp.net .net vb.net iis visual-studio-2013


【解决方案1】:

我不得不就此致电 Microsoft。他们使用 ProdDumpLogMan 来分析正在发生的事情。不到 24 小时就回复我说:

“线程 19 似乎严重阻塞了 CPU。 堆栈表明 AjaxMin 正在尝试在一个 字典对象,这是从 AjaxControlToolKit 触发的, 特别是似乎有一些“CombineScripts”属性 在母版页或设计页中定义 订单详情.aspx。基本上这结合了所有的 JS 文件和 缩小它们。

快速测试是禁用 CombineScript 的逻辑 AjaxControlToolKit 看看是否能提高性能"

Google 告诉我 CombineScriptsToolkitScriptManager 的一个属性,并且由于 AJAX 一直是一个嫌疑犯(没有真正的充分理由,只是一种预感),所以我开始接受它。

果然,将我对 ToolkitScriptManager 的引用更改为包含 CombineScripts="false" 完全解决了问题

<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" CombineScripts="false" ScriptMode="Release" />

相关帖子: 我不是唯一一个:https://www.google.ca/#q=ToolkitScriptManager+combinescripts+problem

两个有用的帖子: http://forums.asp.net/t/1696523.aspx http://ajaxcontroltoolkit.codeplex.com/workitem/27558

【讨论】:

    【解决方案2】:

    在项目项目属性中检查对旧版本 Ajax 控件工具包的任何引用。如果找到任何内容,请删除相同内容并重试。

    【讨论】:

    • 对工具包(以及 ajaxmin 和 htmlagilitypack 依赖项)的唯一引用都是“自动更新”版本。无论如何,我删除了引用并通过管理 NuGet 包重新添加了它们。同样的问题仍然存在。不过,谢谢!
    【解决方案3】:

    我在使用 nuget 时有时会出现同样的错误。我认为冲突是您的 web.config 程序集引用。请比较您的 dll 参考和 web.config 参考。

    【讨论】:

    • 我的 web.config 中唯一的引用必须没问题。不过,谢谢!答案见下文!
    【解决方案4】:

    尝试将应用程序池的 .Net 版本更改为 v4.0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-04
      • 2011-11-09
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      相关资源
      最近更新 更多