【问题标题】:JavaScript runtime error for Microsoft AJAX scriptsMicrosoft AJAX 脚本的 JavaScript 运行时错误
【发布时间】:2013-10-06 20:12:41
【问题描述】:

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

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

0x800a139e - JavaScript 运行时错误:Sys.InvalidOperationException: 脚本“Timer.js”已被多次引用。如果 显式引用 Microsoft AJAX 脚本,设置 ScriptManager 的 MicrosoftAjaxMode 属性为 Explicit。

(注意:在错误消息中为单词“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 软件包都是最新的。任何人都了解或知道导致此错误的原因,我该如何解决?

【问题讨论】:

    标签: c# asp.net ajax asp.net-ajax


    【解决方案1】:

    解决了这个问题。我必须相信我下载的 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 计时器),错误消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多