当我将我的应用程序放在IIS7服务器上时,FontAwesome对我不起作用.
在Firefox中,请求的URL被编码为http://l2etest.kema.intra/fonts/fontawesome-webfont.ttf?v = 4.0.3,我得到404.当我改变?至 ?一切正常.
同样的事情发生在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?.
请不要建议删除’?’或来自网址的“#”.他们是故意的,是必不可少的.问题是如何使IIS不以这种方式编码URL.任何线索将不胜感激.
编辑:
顺便说一句.上面的情况发生在web.config中我设置requestValidationMode和requestPathInvalidCharacters:
<httpRuntime shutdownTimeout="360" maxRequestLength="102400" enable="true" requestValidationMode="2.0" requestPathInvalidCharacters="" />
没有它,我得到400(不良请求):
从客户端检测到潜在危险的Request.Path值(?)
如何修复IIS以正确提供字体?
EDIT2:
好的,我找到了问题的原因.用于MVC3的SquishIt捆绑工具正在改变这些角色.当我从bundle中排除font-awesome.css时,一切正常.
解决方法
Why is @font-face throwing a 404 error on woff files?
在Web配置中添加MIME类型:
<system.webServer> <staticContent> <remove fileExtension=".woff" /> <!-- In case IIS already has this mime type --> <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" /> </staticContent> </system.webServer>