【问题标题】:Ajax client-side framework failed to load Asp.Net 4.0Ajax 客户端框架无法加载 Asp.Net 4.0
【发布时间】:2011-04-11 08:31:38
【问题描述】:

我在使用 ASP.Net 4.0 Ajax 时遇到了一个复杂的问题....我在我的机器上使用 Visual Studio 2010 创建了一个网站,并添加了一些以前可以正常工作的更新面板,但突然间我遇到了一系列错误我运行我的网站

Microsoft JScript 运行时错误:ASP.NET Ajax 客户端框架加载失败。

Microsoft JScript 运行时错误:“Sys”未定义

奇怪的是,我用 VS 2010 在同一台机器上创建了一个网站,并且那里的更新面板运行良好。我将其 web.config 带到我的新网站并仅更改了连接..我得到了同样的错误

我试图寻找一个解决方案,但我没有找到任何真正的解决方案。有人可以帮忙吗?

【问题讨论】:

  • 这么有用的帖子,我不止一次遇到过这个问题,并在这里使用了多个答案来解决它。谢谢 SO 社区!
  • 不知道为什么它被关闭了,因为它对我有用以及所有积极的 SO 社区反馈。在这种情况下,我不认为所有社区的支持都是合理的。
  • 我已将 DefaultAppPool 的托管管道模式从“经典”更改为“集成”,它对我有用。我不能和你说任何常见的配置更改,但它也可能对你有用。

标签: asp.net ajax .net-4.0


【解决方案1】:

这是 zhughes 在 asp.net 论坛上来自 thread 的答案。

原因:使用 URL Routing 模块时,scriptmanager 生成的 javascript 的路径发生了变化。

解决方案:告诉路由 API 不要路由扩展名为“axd”的文件(由脚本管理器生成的文件)

将此规则添加到您在Global.asax中注册路由规则的方法中

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

此外,您应该在 web.config 中有此部分

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>

【讨论】:

  • routes.Ignore("{resource}.axd/{*pathInfo}");必须出现在第 1 个和之前 routes.MapPageRoute("RootPages", "{file}", "~/{file}.aspx");
  • 这消除了我的 JS 错误,但 AJAX 仍然无法正常工作。看起来它在响应中达到了我想要的但没有输出。有什么想法吗?
  • 我不会运行 runAllManagedModulesForAllRequests="true" - 可能会对性能造成很大影响。 britishdeveloper.co.uk/2010/06/…
  • 我在这个问题上坚持了一周。谢谢。
  • “由于过于本地化而关闭”?!?嗯?
【解决方案2】:

如果您使用 URL 重写模块,则在每个重写规则中添加

<add input="{URL}" pattern="\.axd$" negate="true"/>

在条件标签下,像这样:

<rule name="HomeRewrite" stopProcessing="true">
   <match url="^home$"/>
   <conditions>
     <add input="{URL}" pattern="\.axd$" negate="true"/>
   </conditions>
   <action type="Rewrite" url="/home.aspx"/>
</rule>

【讨论】:

    【解决方案3】:

    我发现这可能是一个缓存/压缩问题,通过将以下内容放入 Web.Config,可以解决该问题。

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

    【讨论】:

    • 虽然这确实消除了我的错误 (+1),但禁用缓存似乎并不理想。
    • 虽然不理想,但这个答案是我现在的后备方案,但在尝试了 kannankeril 关于修复“已安装程序”-->“MS .NET Framework 4 客户端配置文件”的解决方案后,它永久消除了问题对我来说。
    【解决方案4】:

    我遇到了同样的问题。我安装了 VS 2010 SP1,问题就消失了。

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题,我通过在 Framework 4.0(我的应用程序在其上运行)的文件夹上运行命令 aspnet_regiis -i 解决了它。这是 IIS 的处理程序映射的问题:此操作为我解决了问题。 另见this post

      希望这会有所帮助。

      【讨论】:

        【解决方案6】:

        它可能只是在您的 web.config 中缺少部分,例如 &lt;httpHandlers&gt;&lt;Handlers&gt;,我的建议是,如果您有旧的 web 配置副本,请尝试一下。

        【讨论】:

          【解决方案7】:

          Microsoft JScript 运行时错误:ASP.NET Ajax 客户端框架加载失败。

          像这样添加引用..

          <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>              
          <add assembly="System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
          <add assembly="System.Data.Services, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
          <add assembly="System.Data.Services.Client, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
          

          【讨论】:

            【解决方案8】:

            这是一个常见的错误,当您尝试在页面加载之前调用框架 javascript 函数时发生。

            所以当 dom 准备好(例如页面加载)时,ether 运行你的代码,ether 将你的代码放在 scriptmanager 标记之后,或者检查将它放在从 scriptmanager 加载 javascript 之后。

            【讨论】:

            • 我该怎么做?是的,脚本管理器在我的母版页的顶部,但即使我创建了一个新的空白页,更新面板中只有一个标签和一个按钮,我也收到了同样的错误
            • @khaled 你能看到你页面的源代码吗(右键单击浏览器并选择源代码)。然后检查您收到错误的行。也许您的页面中有一些元素是您在 web.config 上设置的?
            • @Aristos 感谢您的回复,我尝试使用 firebug 对页面进行错误处理,并更改了在所有脚本引用后触发错误的行,这并没有让所有页面在控制时回发在更新面板发回..它发生没有任何动作...我开始了一个新的空白网站并导入了我的页面、app_code 和 BIN 文件夹..它工作正常,但后来又没有改变任何东西我得到了同样的错误。 :(
            • @khaled 你使用 gzip 吗?用于压缩页面?
            • @Aristos 根本没有..我在我的机器上重新安装了 VS 2010,甚至试图在另一台装有 VS 2010 的机器上打开网站,但我得到了同样的错误。我真的很沮丧奇怪的错误!
            【解决方案9】:

            我遇到了这个问题,向全能的谷歌寻求答案,尝试了各种建议,包括上面的建议,但没有运气。放弃并继续做其他工作,几天后回来,问题就消失了。

            我恢复了工作,进行了一些代码更改并发布了我的网站,但问题再次出现。回到谷歌,发现有人在使用 3.5 框架时遇到问题。在这种情况下,他/她可以通过转到“添加/删除程序”控制面板并选择修复选项来解决问题。

            我也这样做了,修复了“MS .NET Framework 4 Client Profile”和“MS .NET Framework 4 Extended”。这解决了我的问题。

            希望能为别人解决这个问题。

            【讨论】:

              【解决方案10】:

              在我的情况下,它是 IISExpress,切换回 cassini 开发服务器解决我的头疼问题。

              【讨论】:

              • 你是怎么做到的?我在 VS2012 中,一旦 IIS Express 进入我的网站,我就无法再让 VS2012 使用 Cassini 为这个网站了!
              【解决方案11】:

              我在处理母版页时也遇到了这个问题,就我而言,这是一个“基本”元设置让我感到困惑。我确实记得在某处读过另一篇文章/博客,其中提到了跨不同域的 ajax 验证问题导致此类错误。

              所以在我的例子中,我有一个 &lt;base...&gt; 参考设置该站点的默认 url,但我的开发人员显然是一个不同的 url...因此冲突并且“ASP.NET Ajax 客户端框架无法加载。 "错误。

              移除了底座,瞧……错误消失了。

              HTH

              戴夫

              【讨论】:

                【解决方案12】:
                1. 如果您的计算机中没有 .Net Framework 4.0 客户端配置文件,请修复 .net Framework 4.0 或重新安装。
                2. 转到项目属性并选择目标框架 3.5。

                【讨论】:

                  【解决方案13】:

                  就我而言,是 Microsoft 的 UrlScan 工具拒绝了 Ajax 请求的某些 URL。禁用它可以解决问题。

                  【讨论】:

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