带有IE11的ASP.NET WebForms 4.0站点不会在Windows Server 2003上为PageRequestManager加载ScriptResource

Tom*_*son 3 asp.net iis webforms windows-server-2003 internet-explorer-11

我遇到了在Windows Server 2003上运行的IE11和ASP.NET Web窗体(.NET 4.0)的问题.在IE11上,以下脚本标记未出现在源HTML中:

<script src="/ScriptResource.axd?d=WYhXIHdkh3HFOMewc5Dscl74H0FlrdD4oOAIu08capt3uxzykhWmBntlCyp0ApmvoCoZjoSCP5s1mUjzhOe99tXFvkHJ2vmkIMEuekr4y9dZdi8--YB4rXK6XO-b-mgnKReGNiAy9wDYm6lNNWWtBg2&amp;t=ffffffffbd2983fc" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

随后IE11报道:

Unable to get property 'PageRequestManager' of undefined or null reference
Run Code Online (Sandbox Code Playgroud)

它适用于所有其他浏览器.

我想这与浏览器定义有关.任何人都知道如何解决这个问题?

更新:

该网站使用Windows 7和Visual Studio 2013以及.NET 4.5.1在我的本地计算机上运行.

您无法在Windows Server 2003上安装.NET 4.5或4.5.1,因此我们无法使用这些软件包更新服务器,但我们必须使用.NET 4.0.

此外,似乎服务器将浏览器识别为低级浏览器,因为"Auto"上的会话cookie支持将模式设置为"cookieless",因此cookie被写为URL的一部分.

希望这些信息能帮助我们解决问题.

谢谢!

Tom*_*son 6

我们最终找到了以下问题的答案:

IE11 Preview中未定义'WebForm_DoPostBackWithOptions'

我们在App_Browsers中有CSSFriendlyAdapters.browser文件,导致了这个问题.

我们不得不

1)创建ie11.browser文件如下:

<browsers>
  <browser id="IE11" parentID="Mozilla">
    <identification>
      <userAgent match="Trident\/7.0; rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)" />
      <userAgent nonMatch="IEMobile" />
    </identification>
    <capture>
      <userAgent match="Trident/(?'layoutVersion'\d+)" />
    </capture>
    <capabilities>
      <capability name="browser"              value="IE" />
      <capability name="layoutEngine"         value="Trident" />
      <capability name="layoutEngineVersion"  value="${layoutVersion}" />
      <capability name="extra"                value="${extra}" />
      <capability name="isColor"              value="true" />
      <capability name="letters"              value="${letters}" />
      <capability name="majorversion"         value="${major}" />
      <capability name="minorversion"         value="${minor}" />
      <capability name="screenBitDepth"       value="8" />
      <capability name="type"                 value="IE${major}" />
      <capability name="version"              value="${version}" />
    </capabilities>
  </browser>

  <!-- Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11,0) like Gecko -->
  <browser id="IE110" parentID="IE11">
    <identification>
      <capability name="majorversion" match="11" />
    </identification>

    <capabilities>
      <capability name="ecmascriptversion"    value="3.0" />
      <capability name="jscriptversion"       value="5.6" />
      <capability name="javascript"           value="true" />
      <capability name="javascriptversion"    value="1.5" />
      <capability name="msdomversion"         value="${majorversion}.${minorversion}" />
      <capability name="w3cdomversion"        value="1.0" />
      <capability name="ExchangeOmaSupported" value="true" />
      <capability name="activexcontrols"      value="true" />
      <capability name="backgroundsounds"     value="true" />
      <capability name="cookies"              value="true" />
      <capability name="frames"               value="true" />
      <capability name="javaapplets"          value="true" />
      <capability name="supportsCallback"     value="true" />
      <capability name="supportsFileUpload"   value="true" />
      <capability name="supportsMultilineTextBoxDisplay" value="true" />
      <capability name="supportsMaintainScrollPositionOnPostback" value="true" />
      <capability name="supportsVCard"        value="true" />
      <capability name="supportsXmlHttp"      value="true" />
      <capability name="tables"               value="true" />
      <capability name="supportsAccessKeyAttribute"    value="true" />
      <capability name="tagwriter"            value="System.Web.UI.HtmlTextWriter" />
      <capability name="vbscript"             value="true" />
    </capabilities>
  </browser>
</browsers>
Run Code Online (Sandbox Code Playgroud)

2)然后从bin目录中删除__browserCapabilitiesCompiler.compiled.

现在一切正常!

我希望这也有助于其他有同样问题的人!