在 web.config 中为 IIS Express 添加 MIME 映射

183

我需要在IIS Express中为.woff文件扩展名添加新的MIME映射。

如果我将以下代码片段添加到IIS Express的"applicationhost.config"中,它可以正常工作:

<staticContent lockAttributes="isDocFooterFileName">
    <mimeMap fileExtension=".woff" mimeType="font/x-woff" />
    ...

但我实际上希望将它添加到我的 "web.config" 中,这样不是每个开发人员都需要在本地更改他们的 "applicationhost.config"。

因此,我从 "applicationhost.config" 文件中再次删除了它,并将以下片段添加到项目的 "web.config" 中:

<system.webServer>
  ...
  <staticContent>
    <mimeMap fileExtension=".woff" mimeType="font/x-woff" />
  </staticContent>
</system.webServer>

很不幸,它似乎不能这样运行,因为当我试图访问一个.woff文件时,我最终会出现HTTP 404.3错误。

我做错了什么?

8个回答

318

将它放在"web.config"中可以正常工作。问题是我选错了MIME类型。它必须是application/font-woff,而不是font/x-wofffont/x-font-woff

<system.webServer>
  ...
  <staticContent>
    <remove fileExtension=".woff" />
    <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
  </staticContent>
</system.webServer>

关于 MIME 类型,请参见此答案:https://dev59.com/fXA65IYBdhLWcg3w2yk2#5142316

更新 2013 年 4 月 10 日

规范现在是一项推荐,并且 MIME 类型正式为:application/font-woff


2
值得一提的是,如何使用IIS7 Web.config添加mime类型,以及IIS7中嵌入.woff字体文件导致404错误。虽然晚了一年,但现在呈上。 - ruffin
5
根据链接所述,更新后的MIME类型应为:application/font-woff(而不是已弃用的application/x-font-woff)。 - longda
1
@longda 谢谢你的提示!我已经更新了答案以反映这一点。 - Martin Buberl
这种在 web.config 中定义自定义 MIME 类型的方法只适用于 IIS Express 吗?我已经尝试在部署到 IIS 6 的 web.config 中使用它,但它不起作用(抛出 404 错误)。如果我通过 IIS 管理器控制台添加 MIME 类型,则可以正常工作。 - Walter Stabosz
@WalterStabosz 上述方法适用于IIS和IIS Express 7+。如果您使用的是IIS 6,则需要在服务器上配置MIME类型,请参阅在IIS 6上配置MIME类型 - Martin Buberl
还要注意最后解决我的问题的其他配置,位于IIS上。https://dev59.com/12cs5IYBdhLWcg3w84Zo - Iman

61
如果有人遇到以下错误: Error: cannot add duplicate collection entry of type ‘mimeMap’ with unique key attribute 以及执行此修复操作时其他脚本停止工作,可能需要先像这样将其删除:
<staticContent>
  <remove fileExtension=".woff" />
  <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
</staticContent>

至少那解决了我的问题。


1
谢谢,这增加了部署时的一些安全性 :) - rdmptn
3
把这个功能加入到我喜欢IIS的功能清单里。 - QueueHammer
1
如果服务器已经包含一个MIME类型,在web.config中指定它可能会导致重复异常。 - The Muffin Man

21
<system.webServer>
     <staticContent>
      <remove fileExtension=".woff"/>
      <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
      <mimeMap fileExtension=".woff2" mimeType="font/woff2" />
    </staticContent>
  </system.webServer>

因为答案简明扼要,所以点赞了。 - undefined

6

我知道这是一个老问题,但是...

我注意到我的IISExpress实例没有提供woff文件的服务,所以我去搜索(找到了这个),然后发现:

http://www.tomasmcguinness.com/2011/07/06/adding-support-for-svg-to-iis-express/

我想我的安装已经支持SVG,因为我没有遇到过这个问题。 但是这些说明可以轻松地修改为woff:

  • 使用管理员权限打开控制台应用程序。
  • 导航到IIS Express目录。 这位于Program Files或Program Files(x86)下
  • 运行命令:

    appcmd set config /section:staticContent /+[fileExtension='woff',mimeType='application/x-woff']

解决了我的问题,我不需要处理一些糟糕的配置(就像我必须添加对PUT和DELETE动词的支持一样)。 耶!


4
感谢您的帖子。我在我的asp.net mvc项目中使用mustache模板时让它工作了。 我使用了以下方法,对我来说起作用。
<system.webServer>   
  <staticContent>
   <mimeMap fileExtension=".mustache" mimeType="text/html"/>
  </staticContent>
</system.WebServer>

3
我没有使用IIS Express,而是在本地完整的IIS 7上进行开发。
因此,如果有其他人试图这样做,请通过IIS管理器添加woff的mime类型。
步骤如下:MIME类型>>右侧点击添加链接,然后输入扩展名:.woff和MIME类型:application/font-woff。

谢谢,这让我快速了解如何重新启动项目。在使用IIS7.5时一切都还好,但是我升级到Win8和IIS8后,网站的web.config中的映射与IIS配置重复,导致请求任何静态资源时出现错误。我删除了重复项,现在一切正常运行。 - rdmptn

1
要解决这个问题,双击左侧面板中选择IIS根节点的"MIME类型"配置选项,并在右侧操作面板中点击"添加..."链接。这将弹出以下对话框。添加.woff文件扩展名并指定"application/x-font-woff"作为相应的MIME类型:

enter image description here

对于woff2,使用application/x-font-woff2进行相同的操作。


1
这适用于IIS,但问题涉及到IIS Express。有没有一种方法可以访问IIS Express Web服务器的此设置? - Philip Stratford
因为回答只涉及到IIS而没有涉及到IIS Express,与提问者的问题不符,所以被踩了。 - undefined

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接