【问题标题】:same ScriptResource,axd loaded twice相同的 ScriptResource,axd 加载了两次
【发布时间】:2014-11-24 17:03:48
【问题描述】:

早安,

我们现有的应用程序在具有 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 不包含 标签。 有所有最新的服务器更新。 该应用程序的所有其他功能均正常运行。

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

你好,维尼

伊迪丝:

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>

【问题讨论】:

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


    【解决方案1】:

    对于以经典模式运行的应用程序,我们也遇到过这个问题。当时的问题原来是为 .axd 扩展名注册了多个 httphandler。

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

    类似:

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

    编辑:

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

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

    【讨论】:

    • 如果您尝试使用指定的名称删除它?稍作修改更新了答案。听起来确实应该是您的问题。您能否更新您的答案并显示您的 web.config 的一部分,以便我看看?
    • 现在我收到一个错误,例如“未知名称属性”
    • 添加了 web.config 的 sn-p (ScriptCompressorHandler is HTTP only / not enabled for HTTPS, 我发现这个问题只有在没有这个 ScriptCompressor 的情况下才会出现,所以这个问题是 HTTPS only
    • 有趣,当时我的建议完全错误。删除 scriptresource 处理程序将不起作用,因为您实际上并没有添加自己的处理程序。
    • 用我认为的问题更新了我的答案。
    【解决方案2】:

    我解决了这个问题。

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

    配置错误的主要原因是如果没有名称为“ARR_farmName_loadbalance_SSL”的 URL 重写规则,则激活 SSL 卸载的“功能”。 如果此规则将被删除,管理器会自动激活 SSL-Offloading。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多