【问题标题】:ASP.NET Ajax client-side framework failed to load. when put the ScriptManager on a blank pageASP.NET Ajax 客户端框架加载失败。将 ScriptManager 放在空白页上时
【发布时间】:2012-07-02 06:38:18
【问题描述】:

我有一个错误Microsoft JScript 运行时错误:ASP.NET Ajax 客户端框架无法加载。在使用母版页的空白页面上

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">

    <div>

    </div>
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnableCdn="True">
    </asp:ScriptManager>
    </form>
</body>
</html>

这就是它的结局

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title></head>
<body>
    <form method="post" action="WebForm2.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNjE2OTgwNTY5ZGTfWA/dEX85PXBlbkKsVxeLKyIn+mJQ9piW5cbeNE+qww==" />
</div>

<script type="text/javascript"> 
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
    theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>
</script>


<script src="http://ajax.microsoft.com/ajax/4.0/2/WebForms.js" type="text/javascript"></script>


<script src="/ScriptResource.axd?d=6x_aX-LOcgUU-O_K6nM7ST5ViC_naT1e4_j-CY35ASRLpcKYpiapwTARuePHvx3llP-Xhl_AG_ubpM1BzkM5iyn9ThB3m7lmXKvkck0cxTcYiT-VbeKgamKxp9EwxBUyIQN6sSCU9SQm3tMtmzQWRg2&amp;t=ffffffffbad362a4" type="text/javascript"></script>
<script type="text/javascript"> 
//<![CDATA[
if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax client-side framework failed to load.');
//]]>
</script>

<script src="/ScriptResource.axd?d=khKEuZ4oUqBYvQxJ1ISpPVIW8_AWWc907q5_v74DI2ruWKTJpldq2osxPkAZ__hffe1Q6HTQUyTbL3Q1mD6MX7V65O5ibxKwb4NvN6ycdZ8vEJ-bz51MO-8uoaP2xioK6npm5n8vldI1d0sOCnH6yw2&amp;t=ffffffffbad362a4" type="text/javascript"></script>

    <div>

    </div>
    <script type="text/javascript"> 
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ScriptManager1', 'form1', [], [], [], 90, '');
//]]>
</script>

    </form>
</body>
</html>

问题可能是我曾经在我的项目中使用 AjaxControlToolkit,但后来我改用 jquery。所以项目中的某个地方可能会尝试添加我找不到的 Ajaxcontroltoolkit。我不知道如何解决这个错误。我曾尝试将 ajaxcontroltoolkit 的 bin 文件添加回来,但它似乎不起作用。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    这个解决方案对我有用:

    客户端的错误是:

    SCRIPT5022:ASP.NET Ajax 客户端框架加载失败。

    SCRIPT5009:“系统”未定义

    经过多次挖掘网站,以及更多解决方案,我解决了这个问题:

    .NET 4.0 的解决方案是:

    将脚本管理器的 EnableCdn 属性设置为 true,如下所示:

    <asp:ScriptManager ID="ScriptManager1" runat="server" EnableCdn="true">
    

    下一个解决方案和更好的解决方案是:

    将此处理程序添加到您的 web.config

      <system.webServer>
        <handlers>
          <remove name="WebServiceHandlerFactory-Integrated"/>
          <remove name="ScriptHandlerFactory"/>
          <remove name="ScriptHandlerFactoryAppServices"/>
          <remove name="ScriptResource"/>
          <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </handlers>
      </system.webServer>
    

    【讨论】:

    • 先生,您是圣人。我一直在尝试解决此问题,并且您的解决方案有效。谢谢!
    • 如果您的代码部署到 dev、uat 或 prod 并且无法正常工作,请使用此选项。我的项目就像一个魅力! ^^
    • 我正在运行 .NET 4.5,而这个(EnableCdn 属性)是唯一有效的解决方案。我不知道为什么这没有被标记为答案。我已经挖掘了好几天,甚至尝试了这个问题的标记答案,但无济于事。就我而言,该错误仅在本地运行时发生,而不是在部署时发生。问题:为什么你的第二个解决方案比 EnableCdn 更受欢迎?
    • 这在 .NET 4.5 和 Visual Studio 2012 中也适用于我。
    • 非常感谢!在 .NET 4.5 下,EnableCdn 解决方案是唯一有效的解决方案。这几天我一直在尝试解决这个问题。
    【解决方案2】:

    Sys undefined 意味着您没有在浏览器上加载客户端文件。

    解决方案 1:

    <add verb="GET"
      path="ScriptResource.axd"
      type="Microsoft.Web.Handlers.ScriptResourceHandler"
      validate="false"/>
    

    解决方案2:如果你没有这个,在&lt;assemblies&gt;下也添加这个

    <add assembly="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    

    解决方案 3:如果这也不起作用,尝试从“bin”文件夹中删除文件并重建解决方案并清除浏览器的缓存。 p>

    解决方案 4:将此添加到您的 web.config

    <location path="ScriptResource.axd">
       <system.web>
          <authorization>
             <allow users="*"/>
          </authorization>
       </system.web>
    </location>
    

    【讨论】:

    • 这个
    • 在你的 web.config 下
    • with solution2 我得到了描述:在处理服务此请求所需的配置文件期间发生错误。请查看下面的具体错误详细信息并适当地修改您的配置文件。解析器错误消息:无法加载文件或程序集“Microsoft.Web.Extensions,版本=1.0.61025.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。系统找不到指定的文件。
    • 不要添加解决方案 2。尝试单独使用解决方案 1,如果它不起作用则尝试其他解决方案,最好是解决方案 4
    • 这帮助了我今天,我在 .NET 4.5 项目中使用 Web 表单身份验证时遇到了类似的问题。原来我需要添加这个:&lt;location path="bundles"&gt;&lt;system.web&gt;&lt;authorization&gt;&lt;allow users="*"/&gt;&lt;/authorization&gt;&lt;/system.web&gt;&lt;/location&gt; 谢谢。
    【解决方案3】:

    telerik 网络资源使用此代码:

    <location path="Telerik.Web.UI.WebResource.axd">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
    

    【讨论】:

      【解决方案4】:

      我启用了 WebForms 路由并忘记为资源添加例外:

      routes.Ignore("{resource}.axd/{*pathInfo}");
      

      【讨论】:

      • 可以在RouteConfig.cs中添加
      【解决方案5】:

      另一个可能的原因是 IE 8 和 9 中的脚本组合/压缩。在顶层的 web.config 中(在配置中),放置

       <system.web.extensions>
             <scripting>
                   <scriptResourceHandler enableCompression="false" enableCaching="true" />
          </scripting>
      </system.web.extensions>
      

      在您的 ToolKitScriptManager 上设置 CombineScripts=False,例如

      <asp:ToolkitScriptManager runat="server" CombineScripts="False">
      </asp:ToolkitScriptManager>
      

      查看http://robmzd.blogspot.com/2010/02/invalid-character-error.html,这是我发现问题的地方

      【讨论】:

      • 谢谢。这为我解决了这个问题。我有一个第三方 HTTP 模块更改(本地化)JavaScript 内容,即使它是 gzip 压缩的。关闭压缩,模块现在不会破坏 JavaScript 代码。
      【解决方案6】:

      当我将表单移动到新服务器时,我遇到了这个问题。我花了几个小时找到解决方案。 问题是新服务器有 ASP.NET 4.0 而我的 web.config 是 ASP.NET 3.5。所以我创建了一个新的 web.config,现在一切正常。

      【讨论】:

        【解决方案7】:

        只需在&lt;system.webServer&gt; 中的web.config 中添加如下所示的&lt;handlers&gt; 部分,这将立即解决问题。

        <system.webServer>
        .
        .
        .
        <handlers>
          <remove name="WebServiceHandlerFactory-Integrated"/>
          <remove name="ScriptHandlerFactory"/>
          <remove name="ScriptHandlerFactoryAppServices"/>
          <remove name="ScriptResource"/>
          <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </handlers>
        </system.webServer>
        

        【讨论】:

          【解决方案8】:

          对我来说这是 Global.asax 代码的问题,

          Application_PreRequestHandlerExecute验证会话之前检查以下条件

          Request.Path.ToUpper() != Constants.AliasName.ToUpper() + "SCRIPTRESOURCE.AXD"
          

          功能代码如下,

          protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e)
                  {
                      if ((Request.Path != Constants.DebugLoginUrl) &&
                          (Request.Path != Constants.SessionTimeOut) &&
                          (Request.Path.ToUpper() != Constants.AliasName.ToUpper() + "TRACE.AXD") && 
                          (Request.Path.ToUpper() != Constants.AliasName.ToUpper() + "SCRIPTRESOURCE.AXD"))
                      {
                          // to prevent check of HTTP HANDLER FLUSH - Session State is Invalid
                          if (HttpContext.Current.Session != null)
                          {
                              if (Session[Constants.personId] == null)
                              {
                              //your code
                              }
          
                          else
                          {
                              Response.Redirect(Constants.SessionTimeOut);
                          }
                      }
                  }
          

          【讨论】:

            【解决方案9】:

            就我而言,Ajax 加载错误仅在我重新加载页面时发生,而不是在第一次加载页面时发生。

            查看 Site.Master 中标签中的内容,我注意到只有一些项目设置了 Path 属性。因此,我将 MsAjaxBundle 更新为此:问题就消失了。我还必须以相同的方式修改 WebFormsBundle,现在重新加载页面即可。

            【讨论】:

              【解决方案10】:

              对我有用的是从Microsoft 下载 ASP.NET Ajax。

              您可能还需要在添加引用时显式浏览正确的 dll 版本,例如

              C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Web.Extensions.dll
              

              【讨论】:

                【解决方案11】:

                我在安装过程中将Application Pool设置为ASP.NET 4.0 Classic

                【讨论】:

                  【解决方案12】:

                  我刚刚将 RadScriptManger 更改为 Simple asp:ScriptManager 并且它可以工作

                  之前:

                  <telerik:RadScriptManager ID="RadScriptManager1" EnableCdn="true" runat="server" />
                  

                  之后

                  <asp:ScriptManager ID="scrReg" EnablePartialRendering="true" runat="server"></asp:ScriptManager>
                  

                  希望对你有帮助

                  【讨论】:

                    【解决方案13】:

                    EnableScriptCombine="False" 添加到您的 RadScriptManager,如下所示:

                    &lt;telerik:RadScriptManager ID="RadScriptManager1" EnableScriptCombine="False" runat="server" /&gt;

                    【讨论】:

                      【解决方案14】:

                      还有另一个原因。我安装了 MySQL 连接器/网络 6.9.5。后来,我开始为 IE 中的某些(但不是全部)项目中的所有内容获取可怕的“sys undefined”。很多很多小时后,我尝试了 Chrome 和 Opera,第一页打开得很好,但是在回发时,所有会话变量都消失了。那是一分钱终于下降的时候 - 连接器/网络必须已经为自己设置了会话状态提供程序,但是对于失败的项目,我在 web.config 中没有任何会话状态。 Sessionstate inproc 立即修复了它。至少我认为是这样的……

                      【讨论】:

                        【解决方案15】:

                        就我而言,我最终得到了&lt;httpHandlers&gt;&lt;handlers&gt; 中提到的处理程序。 删除 &lt;httpHandlers&gt; 部分修复了它。

                        【讨论】:

                          【解决方案16】:

                          将 System.Web.MVC 引用添加到我的 ASP.NET 并在 global.asax 中添加默认路由后 即

                          RouteTable.Routes.MapRoute("Default", "{controller}/{action}/{id}",
                                                                 new { controller = "new", action = "Index", id = "" });
                                  }
                          

                          开始出现错误

                          将以下行添加到 global.asax.cs 以解决它

                            RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
                          

                          【讨论】:

                            【解决方案17】:

                            对于使用捆绑了 ASP.NET AJAX 脚本的 Visual Studio 2015 ASP.NET 4.5 WebForms Web 应用程序项目模板的任何人:

                            https://stackoverflow.com/a/47673606/313935

                            【讨论】:

                              【解决方案18】:

                              对我来说,网络配置是正确的。 如果网络配置正确,那么。 检查您的IIS App pool 设置在我的情况下App pool pipeline 被选为我集成管道的经典并且它开始工作。

                              转到iis ->右键单击您的应用程序池->高级设置-> 托管流水线模式 -> “集成” -> ok

                              【讨论】:

                                【解决方案19】:

                                我正在使用 Visual Studio 2015 ASP.NET 4.5 Web 窗体 Web 应用程序项目,显然 API 控制器中的错误路由也会导致此错误。我修复了路线,错误消失了。 对于客户端框架无法加载的原因,提供更具描述性的错误消息当然会很好。我花了几个小时检查 web.config 设置,清除 .net 临时目录,检查 global.ascx 等。奇怪的是,当 IE 11 在加载 default.aspx 时死机,chrome 能够加载 default.aspx 和网站.

                                【讨论】:

                                  【解决方案20】:

                                  尝试在 web.config 上将编译更改为 false:

                                  <compilation debug="false" targetFramework="4.5">
                                  

                                  【讨论】:

                                    【解决方案21】:

                                    如果这些答案都不适合您,那么您可能属于我的情况。 好的,所以对我来说,这个问题是由 ssl 证书今天到期引起的,所以在我更新它之后,这些错误就消失了。

                                    【讨论】:

                                      猜你喜欢
                                      • 2023-03-25
                                      • 1970-01-01
                                      • 2011-04-11
                                      • 1970-01-01
                                      • 2011-04-20
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      相关资源
                                      最近更新 更多