ASP.NET 复合脚本路径结果为 404

ASP.NET CompositeScript Path results in 404

本文关键字:结果 路径 脚本 NET 复合 ASP      更新时间:2023-09-26

如果我使用 ASP.NET ScriptManager/ScriptManagerProxy 控件的 CompositeScript 功能,我无法让 Path 属性正常工作:

我的代码

<asp:ScriptManagerProxy ID="scriptProxy2" runat="server">
  <CompositeScript Path="~/Includes/Javascript/Combined.js">
    <Scripts>
      <asp:ScriptReference Path="~/Includes/Javascript/MyFile1.js" />
      <asp:ScriptReference Path="~/Includes/Javascript/MyFile2.js" />
    </Scripts>
  </CompositeScript>
</asp:ScriptManagerProxy>

我的页面在其中获得了正确的脚本标记:

<script src="../Includes/Javascript/Combined.debug.js" type="text/javascript"></script>

但是,当然,该文件不存在,因此浏览器会得到404。

我错过了什么吗?

您是否指定了源脚本以使用ScriptReference标签进行组合 - 请参阅文档。

编辑:使用反射器后,我发现如果您使用 指定Path 属性,脚本组合不会发生 - 它只是将脚本引用发送到指定的路径(根据发布/调试模式和区域性进行修改(如果启用了本地化))。谷歌搜索后,发现路径属性的预期用途是解决 1024 个字符的 url 限制。从此 MSDN 文档中:

脚本引用的数目 复合脚本引用实例可以 包含受大小限制 生成的网址。网址不能 长度超过 1024 个字符。

如果你必须解决这个问题 限制,您有两种选择。这 第一种选择是减少数量 的脚本引用对象,即 复合脚本包含。第二个 选项是手动组合 脚本到单个静态文件中。在 在这种情况下,您可以设置路径 属性到静态的位置 文件。

我还偶然发现了这个链接,其中评论部分有大量信息。其中一条评论明确指出,

您可以组合多个物理 使用该功能的脚本文件,但 我们真的不推荐它,因为那里 是否与某些服务器开销相关 文件监控。你是什么 描述处理得更好 在编译时"构建"脚本 时间而不是做组合 在运行时。该功能确实适用于 想要的应用程序开发人员 合并来自各种的现有脚本 他们在他们的 应用。

所以总而言之,我认为你打算如何使用组合脚本既不支持也不推荐。我建议您使用构建时脚本组合 - 以下资源将帮助您实现相同的目标:

http://encosia.com/2009/05/20/automatically-minify-and-combine-javascript-in-visual-studio/

查看 Chirpy 加载项中的捣碎功能:http://www.weirdlover.com/2010/07/18/chirpy-attains-godlike-abilities-in-version-1-0-0-4/#mash