【问题标题】:ASP.NET CompositeScript Path results in 404ASP.NET CompositeScript 路径导致 404
【发布时间】:2011-05-18 22:26:30
【问题描述】:

如果我使用 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。

我错过了什么吗?

【问题讨论】:

    标签: javascript asp.net


    【解决方案1】:

    您是否指定了要使用 ScriptReference 标签组合的源脚本 - 请参阅 documentation

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

    一个脚本引用的数量 CompositeScriptReference 实例可以 包含受大小的限制 生成的 URL。网址不能 超过 1024 个字符。

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

    我还偶然发现了 this link 在 cmets 部分中有大量信息。一条这样的评论明确指出

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

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

    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

    【讨论】:

    • 是的,我应该更详细地开始,但我现在更新了我的代码示例以显示正在添加的脚本。并且文档确实说我可以在“为复合脚本分配文件名”部分下为脚本命名:msdn.microsoft.com/en-us/library/… 但就像我说的那样,访问时会给出 404。
    • @slolife,显然,您打算使用 combine 脚本既不支持也不推荐。在答案中查看我的编辑。
    猜你喜欢
    • 2019-05-30
    • 2014-11-30
    • 2013-09-12
    • 2015-04-07
    • 2014-07-12
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    相关资源
    最近更新 更多