当我将应用程序放在IIS7服务器上时,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进行编码。任何线索都将不胜感激。
编辑:顺便说一句,当我在web.config中设置requestValidationMode和requestPathInvalidCharacters时,上述情况发生。
<httpRuntime shutdownTimeout="360" maxRequestLength="102400" enable="true" requestValidationMode="2.0" requestPathInvalidCharacters="" />
如果没有它,我会得到400(错误请求):客户端探测到潜在危险的 Request.Path 值。
我该如何修复IIS以正确提供字体?
编辑2: 好的,我找到了问题的原因。SquishIt MVC3打包工具更改了这些字符。当我从捆绑包中排除font-awesome.css时,一切正常。