我有一个使用Visual Studio 2010构建的网站。当我升级到Visual Studio 2013时,在某些页面上我会收到一条错误消息:
无法添加类型' mimeMap'的重复集合条目具有唯一键属性' fileExtension'设置为' .mp4'。
经过一番搜索后,我在博客上找到了一个有用的帖子,但由于问题有点不同而且我没有在stackoverflow上找到它,我想我会在这里发布问题和答案。
答案 0 :(得分:94)
问题在于,当我切换到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>
另一方面,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>
在IIS 7中,删除操作不会执行任何操作,因为它尚未定义,但在IIS 8中,它将删除原始文件,以便新文件不会重复。感谢Oliver Payen for his post on the IIS 7 and IIS 8 difference and the remove solution。
答案 1 :(得分:14)
在添加扩展程序之前,只需删除扩展程序。
<remove fileExtension=".mp4" />
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
答案 2 :(得分:2)
在我的情况下,我只是通过删除正在执行重复操作的行来解决问题:
<configuration>
(...)
<system.webServer>
<staticContent>
<!--mimeMap fileExtension=".json" mimeType="application/json" /-->
</staticContent>
</system.webServer>
</configuration>
答案 3 :(得分:0)
去 %windir%\system32\inetsrv\config\applicationHost.config 备份这个文件并用记事本打开,找到重复的条目并删除这一行