使用MS Bundling清空捆绑包

时间:2013-11-22 01:04:45

标签: c# css asp.net-mvc-4 asp.net-optimization dotless

我正在使用asp.net mvc4以及MS使用System.Web.Optimization库(1.1.0)和使用dotless的自定义LessTransform提供的内置捆绑和缩小。该站点托管在IIS 7中。我的问题是,网站上的软件包间歇性地导致网站加载所有奇怪。

http://site/Content/surveycss?

是什么导致这种情况?

更新

  1. 我读到如果较少的编译器遇到错误,则可能导致空包。我已经测试了较少的错误而且没有。

  2. 我发现捆绑包配置为使用Content目录的方式可能存在问题,因此我将其更改为:

        bundles.Add(new StyleBundle("~/Content/bootstrap")
            .Include(...));
    
  3. 为:

            bundles.Add(new StyleBundle("~/cssbundles/bootstrap")
                .Include(...));
    

    重新部署应用程序后,它似乎解决了这个问题。然而,它再次发生。该设置是一个负载均衡器,具有2个IIS服务器。今天,我登录到服务器1并通过IIS浏览该网站,它正在加载正常。

    登录服务器2并通过IIS浏览网站会产生捆绑问题。

    更新2

    测试资源可能正在使用的想法。我尝试删除导致该问题的捆绑包中的较少文件。成功删除的文件越少。恢复.less文件后,直接浏览服务器时问题就消失了。

    更新3

    这个问题刚刚开始在dev服务器上出现,该服务器没有使用不使用无点的bundle进行负载均衡

        bundles.Add(new StyleBundle("~/cssbundles/bootstrap")
            .Include("~/Content/bootstrap/bootstrap.css"));
    

    这是因为nuget包升级而且文件不再位于引用的位置。我仔细检查了所有其他捆绑包,以确保文件仍然存在于它们被引用的位置,并且它们确实存在,所以这不是问题。

    更新4

    添加了对无点配置的记录并收到了此消息:

    06-12-2013 16:08:07.814,10.183.130.143,demo.app.com,/cssbundles/bundlecss?v=WN4weCPcGs3GJ_Hgsm2B7qNotYNgbrMS6xwEt8SWK6M1,user@email.com,"
    directive block with unrecognised format on line 1:
       []: /beginning of file
      [1]: @v: WN4weCPcGs3GJ_Hgsm2B7qNotYNgbrMS6xwEt8SWK6M1;
           ^
      [2]: @import ""~/Content/variables.less"";",Error,""
    

    思想?

1 个答案:

答案 0 :(得分:1)

出现了这种确切的情况(v=[no value]),因为Build Action文件上的.less值意外设置为None。发生这种情况是因为文件以不寻常的方式添加到项目中,然后重命名为.less。由于VS.NET最初并不知道文件类型,因此它将Build Action的属性设置为none

确保.less文件的Build Action配置设置为Compile,从而允许实际文件包含在构建中。这也是为什么问题不会在本地发生,因为它会出现,但一旦部署就会​​丢失。