22

我有一个错误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 文件,但它似乎不起作用。

4

21 回答 21

43

这个解决方案对我有用:

客户端的错误是:

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>
于 2013-12-01T19:29:41.847 回答
21

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

解决方案1:

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

解决方案2:如果你没有这个,在下面也添加这个<assemblies>

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

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

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

<location path="ScriptResource.axd">
   <system.web>
      <authorization>
         <allow users="*"/>
      </authorization>
   </system.web>
</location>
于 2012-07-02T06:59:02.103 回答
5

对于 Telerik Web 资源,请使用以下代码:

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

于 2013-04-25T10:18:41.307 回答
3

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

routes.Ignore("{resource}.axd/{*pathInfo}");
于 2016-04-16T13:22:01.823 回答
2

另一个可能的原因是 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这是我发现问题的地方

于 2013-07-12T17:47:04.643 回答
1

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

<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>
于 2015-08-19T11:15:08.203 回答
1

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

于 2015-07-15T10:04:24.107 回答
1

对我来说,这是 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);
                }
            }
        }
于 2015-09-03T11:42:43.947 回答
0

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

<telerik:RadScriptManager ID="RadScriptManager1" EnableScriptCombine="False" runat="server" />

于 2015-04-16T07:49:30.997 回答
0

好吧,我只是将 RadScriptManger 更改为 Simple asp:ScriptManager 并且它可以工作

前:

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

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

希望能帮助到你

于 2015-03-30T17:46:22.627 回答
0

在我的情况下,Ajax 加载错误仅在我重新加载页面时发生,而不是在第一次加载页面时发生。

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

于 2014-04-18T11:13:42.923 回答
0

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

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

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Web.Extensions.dll
于 2014-06-17T16:08:45.087 回答
0

我在安装过程中将应用程序池设置为ASP.NET 4.0 Classic

于 2015-01-24T11:25:09.543 回答
0

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

于 2016-05-12T15:18:12.050 回答
0

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

于 2018-11-28T13:12:17.483 回答
0

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

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

于 2017-12-06T11:52:49.023 回答
0

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

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

于 2018-04-20T06:51:40.747 回答
0

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

<compilation debug="false" targetFramework="4.5">
于 2019-09-04T11:59:50.510 回答
0

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

于 2021-12-06T19:24:22.463 回答
0

就我而言,我最终得到了提到的处理程序 in<httpHandlers><handlers>. 删除<httpHandlers>部分固定它。

于 2017-02-20T14:06:28.103 回答
0

将 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}");
于 2017-05-04T17:44:27.980 回答