ScriptResource无法识别enableCompression

时间:2015-10-02 14:21:10

标签: asp.net ajax

我正在将Asp.net 2.0 Web应用程序从Windows Server 2003迁移到Windows Server 2012.我在Windows Server 2012中收到以下错误。

  

“HTTP错误500.19 - 内部服务器错误”。

     

配置错误:无法识别的属性' enableCompression'

     

错误代码:0x8007000d

问题出在以下配置元素中。

<add name="ScriptResource" enableCompression="false" preCondition="integratedMode"  
verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, &#xA; 
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, &#xA;      PublicKeyToken=31bf3856ad364e35"/>

当我删除属性enableCompression="false"时,错误消失了,甚至ajax功能也正常工作。为什么Windows Server 2012中的属性抛出错误以及如何使其在Windows Server 2012中运行?

应用程序池设置如下所示。

enter image description here

1 个答案:

答案 0 :(得分:2)

实际上,在查看官方IIS文档时,似乎处理程序集合的“add”元素不存在“enable compression”属性:

https://www.iis.net/configreference/system.webserver/handlers/add

这可以解释错误,以及为什么删除“启用压缩”属性不会导致进一步的问题。

事实是你不再需要这个属性了。如果你的应用程序在没有它的情况下工作,那么你很高兴。所有这些标记在ASP 2.0中都会压缩javascript,以便在将脚本传输到客户端时获得较小的性能提升。如果你的javascript文件大小很小,那么这是一个非常微不足道的收益。

更重要的是,请注意您的原始代码调用启用compression = false。这意味着原始代码由于某种原因显式禁用压缩。默认的现代行为也会禁用压缩。 因此,就压缩而言,新代码的行为与原始属性相同。

最后,为嵌入为汇编资源的javascript启用压缩/缓存的现代方法是利用scriptResourceHandler元素。

示例:

<scriptResourceHandler 
enableCompression="true|false" 
enableCaching="true|false" />

请参阅此处的MSDN文档:https://msdn.microsoft.com/en-us/library/vstudio/bb513840(v=vs.100).aspx