相同的ScriptResource,axd加载两次

时间:2014-09-30 06:54:53

标签: asp.net .net-4.5 iis-8

早上好,

我们在IIS 7.5 / .NET 4.5的 Windows Server 2008R2 上有一个稳定且无错误的现有应用程序。

我们计划使用IIS 8.5 / .NET 4.5 迁移到Windows Server 2012R2 ,现在遇到了应用程序(相同的二进制文件/配置)确实存在的问题注入两个ScriptResource.axd 文件,但都包含相同内容(不同的URL)。

因此,提供“Sys.WebForms”的MicrosoftAjaxWebforms.js丢失,我收到了错误

Unable to get property 'PageRequestManager' of undefined or null reference

两个独立虚拟机上的问题是浏览器独立

应用程序以经典模式运行,web.config不包含< xhtmlConformance>标签。 有最新的服务器更新。 该应用程序的所有其他功能都正常工作。

我希望你们中的一些人遇到同样的问题并知道解决方案。

问候,Verni

EDITH:

web.config的片段(system.web部分)

<system.web>
<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" targetFramework="4.5" enableVersionHeader="false" />
<sessionState timeout="30" mode="StateServer" stateConnectionString="tcpip=...:42424" />
<httpModules>
  <add name="LinkPartnerModule" type="....LinkPartnerModule, ..." />
  <add name="RedirectModule" type="....RedirectModule, ..." />
  <add name="ScriptCompressorModule" type="ScriptCompressorModule, ..." />
</httpModules>
<httpHandlers>
  <remove verb="*" path="scriptresource.axd"/> // added from StackOverflow
  <add verb="*" path="*js.axd" type="ScriptCompressorHandler" />
</httpHandlers>
<compilation debug="false" defaultLanguage="c#" targetFramework="4.5">
  <assemblies>
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Data.Services.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
    <add assembly="System.Speech, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </assemblies>
</compilation>
<globalization culture="de-DE" enableClientBasedCulture="true" fileEncoding="utf-8" uiCulture="de" />
<pages compilationMode="Auto" styleSheetTheme="*" validateRequest="false" enableEventValidation="false" controlRenderingCompatibilityVersion="3.5" enableViewState="true" clientIDMode="AutoID">
</system.web>
<system.web.extensions>
  <scripting>
    <scriptResourceHandler enableCompression="true" enableCaching="true" />
  </scripting>
</system.web.extensions>

2 个答案:

答案 0 :(得分:1)

对于在经典模式下运行的应用程序,我们也有这个问题。时间结果是注册了.axd扩展名的多个httphandler的问题。

如果您在web.config中确保在添加之前删除任何.axd处理程序,则可能会解决您的问题。

类似的东西:

<remove verb="*" path="scriptresource.axd"/>

编辑:

查看你的web.config我很确定这个问题与scriptcompressorhandler和module有关。如你所说,这只发生在使用HTTPS,我怀疑发生的是模块仍然通过HTTPS运行,但处理程序没有。这意味着模块将压缩版本发送到常规scriptresource处理程序,并输出脚本的新副本。

解决方案是通过HTTPS激活scriptcompressorhandler或确保模块不通过HTTPS运行。

答案 1 :(得分:0)

我解决了问题。

原因是配置错误的ARR(应用请求路由器), SSL-Offloading处于活动状态。

错误配置的主要原因是&#34;功能&#34;如果没有名称为&#39; ARR_farmName_loadbalance_SSL&#39;的URL-Rewrite Rule,则激活SSL-Offloading。 如果删除此规则,管理器将自动激活SSL-Offloading。

感谢Robban,他带我到HTTPS / SSL。