web-dev-qa-db-fra.com

Visual Studio 2013 donne «Impossible d'ajouter une entrée de collection en double de type« mimeMap »»

J'ai un site qui a été créé à l'aide de Visual Studio 2010. Lorsque je suis passé à Visual Studio 2013, sur certaines pages, j'obtiendrais une erreur qui disait:

Impossible d'ajouter une entrée de collection en double de type "mimeMap" avec l'attribut de clé unique "fileExtension" défini sur ".mp4".

Après quelques recherches, j'ai trouvé un article 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é publier la question et la réponse ici.

42
Eric Barr

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 ajouté explicitement dans le web.config, comme ceci:

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

IIS Express, quant à lui, est basé sur IIS 8 et IIS 8 définit le type mime mp4 et bien d'autres par défaut). 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 BOTH IIS 7 et IIS 8, vous pouvez d'abord utiliser une balise remove pour le mimeMap, puis la 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 car elle n'est pas déjà définie, mais dans IIS 8, elle supprimera l'original pour que le nouveau ne soit pas un double. Merci à Oliver Payen pour son article sur le IIS 7 et IIS 8 différence et la solution de suppression .

96
Eric Barr

Supprimez simplement l'extension avant de l'ajouter.

<remove fileExtension=".mp4" />
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
14
Erçin Dedeoğlu

Dans mon cas, j'ai résolu le problème simplement en supprimant la ligne qui faisait des trucs en double:

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