【问题标题】:scriptreference named respond no longer works名为响应的脚本引用不再有效
【发布时间】:2014-04-05 18:00:59
【问题描述】:

使用:Visual Studio Express 2013 for Web 编写 .NET 4.5.1 站点。

项目最初是在默认的“创建新网站”模板上构建的,因此相关部分已由 IDE 添加到我的项目中,并且尚未进行编辑。

这是一个长达数周的项目,今天我突然收到一个与创建时添加的“罐头”项目有关的错误。到目前为止,它一直在正常工作。

错误信息是:

Server Error in '/' Application.  

'respond' is not a valid script name.  The name must end in '.js'.

我已将其调试为与我的 site.master 文件中的这一行直接相关:

<asp:ScriptReference Name="respond" />

在此处查看评论此参考包含在我的主文件的部分中:

这是 IDE 在创建时添加的更大的脚本引用组的一部分。

在故障排除中,我尝试添加 .js;为实际文件添加路径属性;并完全注释掉该行。

添加扩展名和/或路径会导致不同的错误:

Server Error in '/' Application.

The assembly 'System.Web.Extensions, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35' does not contain a Web resource that
has the name 'respond.js'. Make sure that the resource name is spelled correctly.

唯一成功的故障排除已将其注释掉,但这破坏了另一个关键功能:访问我的链接现在需要 .ASPX 扩展名,因为以前我可以访问我的链接而无需在我的文件中指定扩展名。 .. 这是通过 ide 创建项目的默认方式,所以有了这个修复,如果不编辑每个链接以包含和扩展,我的链接都不起作用。 不理想

我尝试使用包管理器进行更新,但没有任何成功。我还验证了 respond.js 文件存在于我的脚本文件夹中,其他文件(如 bootstrap)也是如此。

我已经在这里搜索并用谷歌搜索了很长一段时间,但是有很多不相关的结果包含来自脚本管理器的摘录,结果是无穷无尽的。

我不确定是否需要更正此文件或是否需要其他文件。重建我的网站没有任何效果,我已经删除了每篇我读到的帖子中的“临时”文件,这些帖子说它可能适用于不同但类似的问题。

此错误的纠正措施是什么?

【问题讨论】:

  • 请注意:此页面不包括我的一些文字。即使我编辑它,它也会显示我的内容,但由于某种原因查看它会隐藏它。它应该是:此参考包含在我的主文件的部分中:
  • 如果您的代码中有对 的引用(请参阅 site.master),然后检查您是否需要 Respond polyfill(请参阅:github.com/scottjehl/Respond)可以使用 NuGet 添加并在 /scripts 下包含 respond.js。然后查看 Aaron0 的答案,并在脚本捆绑器中添加定义。

标签: c# asp.net scriptmanager


【解决方案1】:

在 Site.Master 文件中找到以下行:

<asp:ScriptReference Name="respond"/>

并修改为:

<asp:ScriptReference Name="respond" Assembly="System.Web.Extensions" />

【讨论】:

  • 感谢您的回复,这只会导致与之前相同的消息:“'respond' 不是有效的脚本名称。名称必须以 '.js' 结尾。”并且添加 .js 与原帖中的效果相同。
  • 如果在开发环境中工作但在生产中(不同的机器)尝试强制复制引用,在BIN目录Project -> Reference -> Copy Local: True 除了添加引用表示@sam
【解决方案2】:

我自己也遇到了同样的问题,并通过执行以下操作解决了它。

在BundleConfig类的RegisterBundles方法中添加如下代码:

ScriptManager.ScriptResourceMapping.AddDefinition(
                "respond",
                new ScriptResourceDefinition
                {
                    Path = "~/Scripts/respond.min.js",
                    DebugPath = "~/Scripts/respond.js",
                });

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,但以上都没有奏效... 验证您的 global.asax.cs,在我的情况下缺少 Routeconfig 和 BundleConfig 行,添加它们后,它再次工作。

        void Application_Start(object sender, EventArgs e)
        {
            // Code that runs on application startup
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    

    【讨论】:

      【解决方案4】:

      解决方案:

      • 在生产服务器上编译项目,而不是在开发机器上预编译。

      • 如果使用VS一键发布工具,在“设置”下,确保“发布期间预编译”没有勾选。

      【讨论】:

        【解决方案5】:

        当我将从 Visual Studio(在我的案例中为 2015 年)生成的模板 asp.net Web 表单应用程序部署到 Azure 应用服务时,发生了这个问题。

        对我来说,上面给出的解决方案都不起作用。我得到的错误与这个问题中描述的完全一样。

        然后我偶然发现了以下文章,该文章显示了添加 jquery 包的示例。 Adding Bundling and Minification to Web Forms

        按照该示例,我在 RegisterBundles 方法中为“响应”删除了 AddDefinition 的模板代码。然后我添加了以下内容并重建并上传了应用程序dll。

                    bundles.Add(new ScriptBundle("~/bundles/respond").Include(
                            "~/Scripts/respond.min.js"));
        

        然后我在 site.master 中的 Asp:PlaceHolder 中添加了以下内容。

                <%: Scripts.Render("~/bundles/respond") %>
        

        最后,我删除了 site.master 中 ScriptManager 中包含的响应。

        【讨论】:

          【解决方案6】:

          您的 bundleConfig 似乎没有启动。

          首先尝试重建和清理项目。之后,尝试查看 Global.asax.cs 文件,看看是否有问题。

          或者尝试获取一个默认的 Global.asax.cs 文件并将其复制到其中。

          【讨论】:

            【解决方案7】:

            我尝试了上述方法,但没有成功。 然后我按照另一篇帖子的指示尝试了

            <add name="BundleModule" type="System.Web.Optimization.BundleModule" />
            

            介于两者之间 并在 web.config 中

            像魅力一样工作。 格雷厄姆 https://forums.asp.net/t/1857743.aspx?Bundling+not+working+when+deployed+to+web+host+works+fine+locally

            【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-01-18
            • 2013-11-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-09-24
            • 1970-01-01
            相关资源
            最近更新 更多