Visual Studio 2013 donne "impossible D'ajouter une entrée de collection en double de type' mimeMap’"
J'ai un site qui a été construit en utilisant Visual Studio 2010. Lorsque j'ai mis à niveau vers Visual Studio 2013, sur certaines pages, j'aurais une erreur qui disait:
Impossible D'ajouter une entrée de collection en double de type 'mimeMap' avec l'attribut clé unique 'fileExtension' défini sur'. mp4'.
Après quelques recherches, j'ai trouvé un post utile sur un blog, mais comme le problème était un peu différent et que je ne l'ai pas trouvé sur stackoverflow, j'ai pensé poster la question et la réponse ici.
3 réponses
Le problème était que lorsque je suis passé à Visual Studio 2013, le serveur web utilisé pour le débogage a changé. Visual Studio 2013 utilise IIS Express par défaut. Bien que Visual Studio 2010 SP1 prenne en charge IIS Express, mon installation utilisait toujours le serveur de développement Visual Studio par défaut.
Comme IIS 7, Visual Studio Development Server n'a pas défini le type MIME mp4 par défaut, c'est pourquoi nous l'avons explicitement ajouté sur le web.config, comme ceci:
<system.webServer>
<staticContent>
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
</staticContent>
</system.webServer>
IIS Express, sur d'autre part, est basé sur IIS 8, et IIS 8 définit le type MIME mp4, et bien d'autres, par défaut. Donc, lorsque le mimeMap est explicitement défini dans le web.config, il est considéré comme un doublon.
Si vous N'avez pas besoin de prendre en charge IIS 7 dans votre environnement de production, vous pouvez simplement supprimer complètement la balise mimeMap du web.config. Si vous devez prendre en charge IIS 7 et IIS 8, Vous pouvez d'abord utiliser une balise remove pour le mimeMap, puis le définir à nouveau, comme ceci:
<system.webServer>
<staticContent>
<remove fileExtension=".mp4" />
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
</staticContent>
</system.webServer>
Dans IIS 7 la suppression ne fera rien puisqu'elle n'est pas déjà définie, mais dans IIS 8 elle supprimera l'original afin que le nouveau ne soit pas un doublon. Merci à Oliver Payen pour son post sur la différence IIS 7 et IIS 8 et la solution remove .
Il suffit de supprimer l'extension avant de l'ajouter.
<remove fileExtension=".mp4" />
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
Dans mon cas, j'ai résolu le problème simplement en supprimant la ligne qui faisait des choses en double:
<configuration>
(...)
<system.webServer>
<staticContent>
<!--mimeMap fileExtension=".json" mimeType="application/json" /-->
</staticContent>
</system.webServer>
</configuration>