asp.net mvc 5 - StyleBundle CdnFallbackExpression问题?

时间:2016-11-17 10:40:08

标签: css asp.net-mvc twitter-bootstrap cdn

我已经通过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);

但是有一个问题:当我添加一个不正确的网址作为CDN时(例如添加' ahttp'而不是' http')我的自定义"后备"不使用css文件,而是显示' ahttp://'在我的HTML源代码中。 我在Debug或Release上运行我的网站时也一样。

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

1 个答案:

答案 0 :(得分:8)

1)这是Microsoft ASP.NET优化框架中的一个错误,记录为here

2)解决方法是将CdnFallbackExpression修改为javascript函数,该函数既检查样式表又加载回退,从而忽略优化框架中的错误脚本。 / p>

此解决方案提供StyleBundle扩展方法来解决问题:Style Bundle Fallback

3)应该有像bootstrap.css(非bootstrap.min.css)这样的未分类版本。在构建Web应用程序以进行发布时,它使用.min版本。更多信息:Bundler not including .min files

4)不,您不能将多个CSS文件与CDN一起使用(每个文件都必须有自己的捆绑包)。这篇文章解释了何时使用CDN(或不使用CDN)以及原因:Know When To CDN