Visual Studio 2013提供"无法添加类型'mimeMap'的重复集合条目"

Eri*_*arr 44 iis-7 visual-studio-2010 iis-express iis-8 visual-studio-2013

我有一个使用Visual Studio 2010构建的站点.当我升级到Visual Studio 2013时,在某些页面上我会收到一条错误消息:

无法添加"mimeMap"类型的重复集合条目,并将唯一键属性"fileExtension"设置为".mp4".

经过一番搜索,我在博客上发现了一个有用的帖子,但由于问题有点不同而且我没有在stackoverflow上找到它,我想我会在这里发布问题和答案.

Eri*_*arr 98

问题是当我切换到Visual Studio 2013时,用于调试的Web服务器发生了变化.Visual Studio 2013默认使用IIS Express.虽然Visual Studio 2010 SP1支持IIS Express,但我的安装仍使用默认的Visual Studio Development服务器.

与IIS 7一样,Visual Studio开发服务器默认情况下没有定义mp4 mime类型,因此我们在web.config中明确添加了它,就像这样:

<system.webServer>
<staticContent>
  <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
</staticContent>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

另一方面,IIS Express基于IIS 8,IIS 8默认定义了mp4 mime类型和许多其他类型.因此,当在web.config中显式设置mimeMap时,它被认为是重复的.

如果您不需要在生产环境中支持IIS 7,那么您可以从web.config中完全删除mimeMap标记.如果您需要同时支持IIS 7和IIS 8,那么您可以先为mimeMap使用remove标签,然后再次设置它,如下所示:

<system.webServer>
<staticContent>
    <remove fileExtension=".mp4" />
    <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
</staticContent>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

在IIS 7中,删除将不会执行任何操作,因为它尚未定义,但在IIS 8中,它将删除原始文件,以便新文件不会重复.感谢Oliver Payen关于IIS 7和IIS 8差异以及删除解决方案的帖子.


Erç*_*ğlu 14

只需在添加扩展程序之前删除它

<remove fileExtension=".mp4" />
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
Run Code Online (Sandbox Code Playgroud)

  • 从我从VS2013升级到VS2015时,我遇到了这个问题(大多数Angular控制器停止加载)。添加此&lt;remove&gt;行将其修复。非常感谢你 !! (2认同)