Microsoft AJAX 脚本的 JavaScript 运行时错误

本文关键字:JavaScript 运行时错误 脚本 AJAX Microsoft | 更新日期: 2023-09-27 18:33:32

我在 2012 年 VS.NET 有一个 ASP.NET Web 表单项目,该项目已经运行数周。每次我开始调试项目时,我都会突然得到以下信息:

第 1 行第 12302 列处未处理的异常 http://localhost :1449/bundles/MsAjaxJs?v=_Onj24X0Yu7cK2nh78YBmVwMlQTGcakS5HZSOI_a6SM1

0x800a139e - JavaScript 运行时错误:Sys.InvalidOperationException: 脚本"计时器.js"已被多次引用。如果 显式引用Microsoft AJAX 脚本,设置 ScriptManager 的 MicrosoftAjaxMode 属性以显式执行。

(注意:在错误消息中为单词"localhost"添加了空格,因为这些URL的格式不适合发布;无论如何链接都是无关紧要的(

这很奇怪,因为它只是突然开始发生的。我对此进行了一些搜索,并想出了任何可以使其工作的东西。

在自动生成的BundleConfig.cs中,此文件仅列出 1x:

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/bundles/WebFormsJs").Include(
          "~/Scripts/WebForms/WebForms.js",
          "~/Scripts/WebForms/WebUIValidation.js",
          "~/Scripts/WebForms/MenuStandards.js",
          "~/Scripts/WebForms/Focus.js",
          "~/Scripts/WebForms/GridView.js",
          "~/Scripts/WebForms/DetailsView.js",
          "~/Scripts/WebForms/TreeView.js",
          "~/Scripts/WebForms/WebParts.js"));
    bundles.Add(new ScriptBundle("~/bundles/MsAjaxJs").Include(
        "~/Scripts/WebForms/MsAjax/MicrosoftAjax.js",
        "~/Scripts/WebForms/MsAjax/MicrosoftAjaxApplicationServices.js",
        "~/Scripts/WebForms/MsAjax/MicrosoftAjaxTimer.js",
        "~/Scripts/WebForms/MsAjax/MicrosoftAjaxWebForms.js"));
    // Use the Development version of Modernizr to develop with and learn from. Then, when you’re
    // ready for production, use the build tool at http://modernizr.com to pick only the tests you need
    bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
        "~/Scripts/modernizr-*"));
}

在 web.config 中,计时器没有重复或列出。我对该项目进行了搜索,这是列出它的唯一地方。

我还确保所有NuGet软件包都是最新的。任何人都了解或知道导致此错误的原因,我该如何解决?

Microsoft AJAX 脚本的 JavaScript 运行时错误

解决了这个问题。我必须相信我下载的 NuGet 包更新之一正在单独注册这些文件,同时一定是新逻辑。我这样说是因为这个问题突然出现。

解决方案只是注释掉或删除在BundleConfig.cs文件中注册超过 1 倍的违规脚本。以下是脚本注册的修改部分:

bundles.Add(new ScriptBundle("~/bundles/MsAjaxJs").Include(
         "~/Scripts/WebForms/MsAjax/MicrosoftAjax.js",
         "~/Scripts/WebForms/MsAjax/MicrosoftAjaxApplicationServices.js"));

以下 (2( 个脚本是罪魁祸首:

"~/Scripts/WebForms/MsAjax/MicrosoftAjaxTimer.js",
"~/Scripts/WebForms/MsAjax/MicrosoftAjaxWebForms.js"

删除它们后,错误消失了,这些脚本中的功能仍然有效(我使用 Ajax 计时器(,错误消失了。