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

时间:2014-07-13 17:14:13

标签: visual-studio-2010 iis-7 visual-studio-2013 iis-express iis-8

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

  

无法添加类型' mimeMap'的重复集合条目具有唯一键属性' fileExtension'设置为' .mp4'。

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

4 个答案:

答案 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 备份这个文件并用记事本打开,找到重复的条目并删除这一行