asp.net-mvc – 当Bundling EnableOptimizations为true时,Font-Awesome获取请求失败

我遇到了font-awesome和ASP.NET的优化/捆绑功能的问题.

当EnableOptimizations设置为false时,我用于加载图像的字体可以完美地工作:

但是,当EnableOptimizations设置为true时,将不再找到该字体,并显示以下内容:

我注意到GET请求所遇到的路径之间存在差异:

EnableOptimizations = false:localhost:3620 / Content / fonts / fontawesome-webfont.woff?v = 4.1.0
EnableOptimizations = true:localhost:3620 / fonts / fontawesome-webfont.svg?v = 4.1.0

有问题的包看起来像这样:

bundles.Add(new StyleBundle("~/Content/BootstrapAndFontAwesome").Include(
    "~/Content/bootstrap/bootstrapLabel.css","~/Content/font-awesome/font-awesome.css"
    ));

这里发生了什么,解决它的最佳方法是什么?

干杯

更新

关于Rowan在本文评论中的建议,我在stackoverflow answer中实现了以下代码,修复了我的开发机器上的问题:

public class CssRewriteUrlTransformWrapper : IItemTransform
{
    public string Process(string includedVirtualPath,string input)
    {
        return new CssRewriteUrlTransform().Process("~" + VirtualPathUtility.ToAbsolute(includedVirtualPath),input);
    }
}

我需要做一些练习部署以确保它是可靠的(例如使用虚拟IIS目录等).到目前为止看起来不错

请注意,我确实必须将font-awesome文件分离到它自己的bundle中,因为在采用CssRewriteUrlTransform解决方案时它不能与其他资源捆绑在一起.

谢谢.

解决方法

使用 CssRewriteUrlTransform.

Rewrites urls to be absolute so assets will still be found after bundling.

例:

bundles.Add(new StyleBundle("~/Content/mycss")
    .Include("~/Content/font-awesome.css",new CssRewriteUrlTransform()));

相关文章

引言 本文从Linux小白的视角, 在CentOS 7.x服务器上搭建一个...
引言: 多线程编程/异步编程非常复杂,有很多概念和工具需要...
一. 宏观概念 ASP.NET Core Middleware是在应用程序处理管道...
背景 在.Net和C#中运行异步代码相当简单,因为我们有时候需要...
HTTP基本认证 在HTTP中,HTTP基本认证(Basic Authenticatio...
1.Linq 执行多列排序 OrderBy的意义是按照指定顺序排序,连续...