Visual Studio 2013提供了“不能添加types'mimeMap'的重复收集条目”

我有一个使用Visual Studio 2010构build的网站。当我升级到Visual Studio 2013,在一些页面上,我会得到一个错误,说:

无法添加具有唯一键属性“fileExtension”设置为“.mp4”的types“mimeMap”的重复收集条目。

经过一番search之后,我在博客上find了一个有用的post,但是由于问题有点不同,我没有在stackoverflow上find它,我想我会在这里发布问题和答案。

问题是,当我切换到Visual Studio 2013时,用于debugging的Web服务器已更改。 Visual Studio 2013默认使用IIS Express。 尽pipeVisual Studio 2010 SP1支持IIS Express,但我的安装仍在使用默认的Visual Studio Development Server。

像IIS 7一样,Visual Studio Development Server默认情况下没有定义mp4 mimetypes,所以我们在web.config中明确地添加了它,就像这样:

<system.webServer> <staticContent> <mimeMap fileExtension=".mp4" mimeType="video/mp4" /> </staticContent> </system.webServer> 

另一方面,IIS Express基于IIS 8,默认情况下,IIS 8定义了mp4 mimetypes等等。 所以当mimeMap在web.config中显式设置时,它被认为是重复的。

如果您不需要在生产环境中支持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在IIS 7和IIS 8上的差异以及删除解决scheme 。

只需在添加之前删除扩展名。

 <remove fileExtension=".mp4" /> <mimeMap fileExtension=".mp4" mimeType="video/mp4" /> 

在我的情况下,我解决了这个问题,只是删除了重复的东西:

  <configuration> (...) <system.webServer> <staticContent> <!--mimeMap fileExtension=".json" mimeType="application/json" /--> </staticContent> </system.webServer> </configuration>