编译debug = false正在杀死我的ASP.NET站点

时间:2013-11-27 21:55:47

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

我有一个很大的(对我来说)ASP.NET(4.5框架)应用程序,在VS2012开发和发布时工作正常。

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

我不知道这是不是红鲱鱼,但是我第一次使用NuGet来更新AJAX Control Toolkit(及其依赖项),它似乎已经有效了。

当我将网站发布(文件系统发布)到我们的Web服务器(Windows Server 2012中的IIS 8)时,它会加载正常的UNTIL我将<compilation defaultLanguage="vb" debug="true" targetFramework="4.5">更改为debug="false"。 当我这样做时,该网站像猪一样运行,有时页面甚至没有加载,并且它的IIS工作进程占用CPU并持有,以百分比增长,直到它消耗基本上所有的CPU。

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

此测试网站的AppPool运行时与我们的实时网站的AppPool具有相同的设置。值得注意的是:

  • 启用32位应用程序:True
  • .NET Framework版本: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.

编辑:看来我继承的这个解决方案是一个网站SITE而不是APP。我不知道是否会发挥作用。

4 个答案:

答案 0 :(得分:7)

我最终不得不打电话给微软。他们使用 ProdDump LogMan 来分析发生了什么。不到24小时就回到我身边说:

  

“线程19似乎非常糟糕地陷入了CPU的压力   堆栈表明AjaxMin试图在a上执行FindEntry   Dictionary对象和这是从AjaxControlToolKit触发的,   特别是似乎有一些“CombineScripts”属性   在主页面或设计页面中定义   OrderDetails.aspx。基本上这结合了所有JS文件和   缩小他们。

     

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

Google告诉我 CombineScripts ToolkitScriptManager 的一个属性,因为AJAX始终是一个嫌疑人(没有真正的理由,只是预感)我跳了上去。 / p>

果然,更改我对 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

答案 1 :(得分:0)

在项目项目属性中检查对旧版Ajax控件工具包的任何引用。如果找到任何,然后删除它,然后再试一次。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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