0

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

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

0x800a139e - JavaScript 运行时错误:Sys.InvalidOperationException:脚本“Timer.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软件包都是最新的。任何人都了解或知道导致此错误的原因,我该如何解决?

4

1 回答 1

0

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

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

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 计时器),并且错误消失了。

于 2013-10-03T17:29:25.003 回答