當我將應用程序放在IIS7服務器上時,FontAwesome不適用於我。當由IIS提供服務時,Fontawesome不起作用
在Firefox中,請求的URL編碼爲http://l2etest.kema.intra/fonts/fontawesome-webfont.ttf%3Fv=4.0.3
,我得到404。當我將%3F
更改爲?
時,一切正常。
同樣的事情發生在IE中,但請求去了eot字體。
這是我在CSS(同FontAwesome頁):
@font-face {
font-family: 'FontAwesome';
src: url('../fonts/fontawesome-webfont.eot?');
src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.0.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.0.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg');
font-weight: normal;
font-style: normal;
}
我認爲問題是,IIS編碼URL和而不是請求../fonts/fontawesome-webfont.eot?
的請求轉到../fonts/fontawesome-webfont.eot%3F
。
請不要刪除'?'或'#'來自URL。他們故意在那裏,而且是必不可少的。問題是如何使IIS不以這種方式編碼URL。任何線索將不勝感激。
編輯: Btw。上述情況發生時,在web.config中我設置requestValidationMode和requestPathInvalidCharacters:
<httpRuntime shutdownTimeout="360" maxRequestLength="102400" enable="true" requestValidationMode="2.0" requestPathInvalidCharacters="" />
沒有它,我得到400(錯誤請求):(?) 從客戶端檢測到有潛在危險的Request的值
如何修復IIS以正確提供字體?
EDIT2: OK,我發現這個問題的原因。用於MVC3的SquishIt捆綁工具正在改變這些角色。當我從包中排除font-awesome.css時,一切正常。
您是否爲iis中的字體設置了您的MIME類型? – Pete
是設置了MIME類型。這是人們一直提到的唯一的東西。當提供正確的URL(?而不是%3F)時提供字體 –
如果您找到了解決方案,請回答您自己的問題,因爲它將來可能會作爲其他人的資源。 – nickhar