asp.net mvc 5 - StyleBundle CdnFallbackExpression问题?

juF*_*uFo 5 css asp.net-mvc cdn twitter-bootstrap

我已经通过StyleBundle将bootstrap CSS文件添加到我的asp.net mvc 5项目中.

(它用作Cdn:https://www.asp.net/ajax/cdn#Bootstrap_Releases_on_the_CDN_14)

  var bootstrapCssCdnPath = "http://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap.min.css";
  var bootstrapCssBundle = new StyleBundle("~/bundles/css/bootstrap", bootstrapCssCdnPath).Include("~/Content/bootstrap.css");
  //bootstrapCssBundle.CdnFallbackExpression // ?
  bundles.Add(bootstrapCssBundle);

  var bootstrapThemeCssCdnPath = "http://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap-theme.min.css";
  var bootstrapThemeCssBundle = new StyleBundle("~/bundles/css/bootstraptheme", bootstrapThemeCssCdnPath).Include("~/Content/bootstrap-theme.css");
  //bootstrapCssBundle.CdnFallbackExpression // ?
  bundles.Add(bootstrapThemeCssBundle);
Run Code Online (Sandbox Code Playgroud)

但是有一个问题:当我添加一个不正确的URL作为CDN时(例如添加'ahttp'而不是'http')我的自定义"fallback"css文件没有被使用,而是在我的html源代码中显示'ahttp://' .当我在Debug或Release上运行我的站点时也是如此.

  1. 为什么我的后备没被使用?
  2. StyleBundle的CdnFallbackExpression是什么?(特别是对于bootstrap.css和bootstrap-theme.css)
  3. .Include应该是.min.css文件还是自动搜索.min.版本第一?
  4. 有没有办法.包含多个css文件,使用带有回退的Cdn,这样我每次使用Cdn的css文件时都不必每次创建一个新的StyleBundle?

小智 8

1)这是Microsoft ASP.NET Optimization Framework中的一个错误,在此处记录.

2)解决方案是修改CdnFallbackExpression为一个javascript函数,它既检查样式表又加载回退,从而忽略优化框架中的坏脚本.

这是解决方案,它提供了一个StyleBundle解决问题的扩展方法:Style Bundle Fallback.

3)应该有像bootstrap.css(不bootstrap.min.css)这样的未分类版本.在构建Web应用程序以进行发布时,它使用的是.min版本.更多信息:Bundler不包括.min文件.

4)不,你不能使用多个带有CDN的CSS文件(每个文件必须有自己的包).这篇文章解释了何时使用CDN(或不使用CDN)以及原因:知道什么时候要CDN.