ASP.NET CompositeScript Path结果为404

时间:2011-05-18 22:26:30

标签: javascript asp.net

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

我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

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

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

  

a。脚本引用的数量   CompositeScriptReference实例可以   包含受到的大小的限制   结果URL。 URL不能   超过1024个字符。

     

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

我还偶然发现this link评论部分中有大量信息。其中一条评论明确指出

  

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

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

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

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