2014-03-27 44 views
41

如果我在_layouts頁面中直接引用font-awesome.css。它會工作font-awesome不能在MVC5中使用bundleconfig

<link href="~/Content/font-awesome-4.0.3/css/font-awesome.css" rel="stylesheet" /> 

但我用在BundleConfig.cs。圖標未顯示。

bundles.Add(new StyleBundle("~/Content/css").Include(
         "~/Content/font-awesome-4.0.3/css/font-awesome.css", 
         "~/Content/bootstrap.css",       
         "~/Content/body.css", 
         "~/Content/site.css", 
         "~/Content/form.css" 
        )); 

而且我觀察到瀏覽器控制檯對字體目錄有錯誤。 Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:51130/fonts/fontawesome-webfont.woff?v=4.0.3

可能是什麼問題?

回答

77

this article描述,捆綁時嘗試使用CssRewriteUrlTransform

bundles.Add(new StyleBundle("~/Content/css").Include(
     "~/Content/bootstrap.css",       
     "~/Content/body.css", 
     "~/Content/site.css", 
     "~/Content/form.css" 
    ).Include("~/Content/font-awesome-4.0.3/css/font-awesome.css", new CssRewriteUrlTransform()); 

這改變了資產的任何URL在CSS文件中,以絕對的網址,以便捆綁不弄亂的相對路徑。

MSDN鏈接:CssRewriteUrlTransform

+4

確保你或者修復了font-awesome.min.css中的路徑(或者只是刪除這個文件,因爲捆綁將會縮小你的css)。否則它可能會拾取.min.css文件,並且轉換不會發生。 – miha

+11

在我的情況下,我不得不刪除.min。css版本 - 它導致優化器不生成正確路徑的縮小版本 – feradz

+1

我有相同的問題訪問字體真棒字體,**其他解決方案**嘗試這些鏈接處理'StyleBundle' **虛擬路徑**:[鏈接1](http://www.mvccentral.net/story/details/articles/kahanu/stylebundle-403-error-solved),[鏈接2](http://forums.asp.net/ t/1774324.aspx?MVC4 + css + bundling + and + image + references),[Link 3](http://ericpanorel.net/2013/10/25/font-awesome-4-0-mvc-bundling-和縮小/),[鏈接4](http://jameschambers.com/2014/08/adding-some-font-awesome-to-mvc-and-bootstrap/),希望這可以幫助某人。 – stom

7

我的解決辦法很簡單:運行PM>安裝,包裝FontAwesome和 引用正確的路徑:

.Include("~/Content/font-awesome.min.css") 
+1

這個。我使用的是NuGet的FontAwesome 4.2,這就是所需要的(儘管引用文件的「.min」版本沒有意義,因爲綁定會爲你縮小縮小)。 –

+0

謝謝!這解決了我的問題! –

3

我有同樣的錯誤消息,並且setting mime types for web fonts in IIS後固定。

+0

我跟着文章,並刪除MIME類型,並重新包括在網絡配置解決了這個問題。此外,我必須移動'/ Content'目錄下的font-awesome.min.css文件,並將字體移動到'/ fonts'下。 – Nabid

0

我也有這個相同的錯誤信息。我不得不這樣做,在這個線程中列出的答案的組合:

.INCLUDE(「〜/內容/字體真棒 - 4.0:

  1. 加入這行代碼由@Simon C作爲建議.3/css/font-awesome.css「,新的CssRewriteUrlTransform());

這個工作來解決相對URL,但是,我不得不從我的涼亭目錄每次我,否則公佈時間的捆綁會感到困惑,不包括,然後再縮小刪除字體awesome.min.css文件font-awesome.css文件。所以......

  • 我必須做什麼@miha在評論建議並修復字體awesome.min.css文件中的相對URL與CssRewriteUrlTransform()。因此,我決定在.min文件中重寫網址,並僅包含該文件,而不是未版本化的版本,並且它可以工作:

    .Include(「〜/ Content/font-awesome-4.0.3/css/font-awesome .min.css「,新的CssRewriteUrlTransform());

  • 如果我理解正確,捆綁器將不會嘗試再次縮小.min文件,因爲它已被縮小。唯一的「缺點」是它不會將font-awesome.min.css內容連接到捆綁器創建的單個css文件中。它將被分開包含。