我正在使用 System.Web.Optimization 的 .NET 4 版本来捆绑和缩小 CSS 和 JS 文件。在我使用 Visual Studio 和 Web 开发服务器的开发环境中,这很好用。使用 debug="false" 捆绑文件确实按预期捆绑。当我使用 Release 构建和完全相同的 web.config(使用 debug="false")部署到 IIS 7 时,Scripts.Render 仍然呈现包含的 JS 文件列表而不是捆绑文件。
<asp:PlaceHolder ID="GeneralScriptsAndCSS" runat="server">
<%: System.Web.Optimization.Scripts.Render("~/bundles/script/common") %>
</asp:PlaceHolder>
我试图在浏览器中手动访问捆绑文件,它看起来对我来说是正确的。唯一的问题是 Scripts.Render(和 Styles.Render)似乎不明白我想要启用优化。
有没有办法获取有关禁用捆绑的原因的日志信息?当我进一步测试时,似乎我的一个页面成功启用了捆绑,而一个没有。这很难调试,除非有办法了解为什么特定页面禁用捆绑。
编辑:捆绑似乎对根目录中的所有页面启用,但对子目录中的所有页面禁用。
编辑 2:看起来我通过将 Nuget 包升级到 1.1.0(beta 1)的预发布版本解决了我的问题。
编辑3:问题又回来了。我已经部署到其他服务器,并且对根目录中的所有页面都启用了捆绑,但对子目录中的所有页面都禁用了捆绑。它在某些服务器上完美运行,但仅在某些服务器的根目录中的页面上运行。
编辑4:发现问题。错误地,我在子文件夹中有额外的 web.config 文件覆盖了调试标志(将其设置为 true)。这就是为什么它在根文件夹中工作(debug false)并且在子文件夹中不起作用(debug true)。