名为“响应”的脚本引用不再有效
本文关键字:引用 不再 有效 脚本 响应 名为 | 更新日期: 2023-09-27 17:57:06
使用: 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 创建项目的默认方式,因此有了此修复程序,如果不编辑要包含和扩展的每个链接,我的任何链接都不起作用。 不理想。
我尝试使用包管理器进行更新,但没有任何成功。 我还验证了响应.js文件存在于我的脚本文件夹中,其他文件(如引导程序)也是如此。
我已经在这里搜索并用谷歌搜索了很长时间,但是有很多不相关的结果包含脚本管理器的摘录,结果是无穷无尽的。
我不确定是否需要更正或是否需要其他文件。 重建我的网站没有效果,我已经删除了我读到的每篇帖子的"临时"文件,这些帖子说它可能适用于不同但类似的问题。
此错误的纠正措施是什么?
在 Site.Master 文件中找到以下行:
<asp:ScriptReference Name="respond"/>
并修改为:
<asp:ScriptReference Name="respond" Assembly="System.Web.Extensions" />
我自己也遇到了同样的问题,并通过执行以下操作修复了它。
将以下代码添加到 BundleConfig 类的 RegisterBundles 方法中:
ScriptManager.ScriptResourceMapping.AddDefinition(
"respond",
new ScriptResourceDefinition
{
Path = "~/Scripts/respond.min.js",
DebugPath = "~/Scripts/respond.js",
});
我遇到了同样的问题,以上都不起作用......验证您的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);
}
解决方案:
-
在生产服务器上编译项目,而不是在开发计算机上进行预编译。
-
如果使用VS一键发布工具,请在"设置"下,确保未选中"发布期间预编译"。
Visual Studio(在我的例子中为 2015)生成的模板 asp.net Web 窗体应用程序部署到 Azure 应用服务时,我遇到了此问题。
对我来说,上面给出的解决方案都不起作用。我完全按照这个问题中的描述得到了错误。
然后我偶然发现了下面的文章,它展示了添加jquery包的示例。向 Web 窗体添加捆绑和缩小
在该示例之后,我删除了 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 中包含的响应。
您的 bundleConfig 似乎没有启动。
首先尝试重新生成和清理项目。之后,尝试查看文件Global.asax.cs看看是否有问题。
或者尝试获取默认的 Global.asax.cs 文件并将其复制到其中。
我尝试了上述方法,但没有取得多大成功。然后我按照另一个帖子的指示尝试
<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