36

Mam witrynę, która została zbudowana przy użyciu programu Visual Studio 2010. Po uaktualnieniu do programu Visual Studio 2013 na niektórych stronach wyświetlany był komunikat o błędzie:Program Visual Studio 2013 podaje komunikat "Nie można dodać pozycji kolekcji duplikatów typu" mimeMap ""

nie można dodać wpisu zduplikowane kolekcji typu „mimeMap” z unikalnym atrybutem kluczowym „fileExtension” wartość”.mp4' .

Po kilku poszukiwaniach znalazłem pomocny wpis na blogu, ale ponieważ problem był nieco inny i nie znalazłem go na stackoverflow, pomyślałem, że opublikuję tutaj pytanie i odpowiedź.

Odpowiedz

82

Problem polegał na tym, że po przejściu na Visual Studio 2013 zmieniono serwer WWW używany do debugowania. Visual Studio 2013 domyślnie używa programu IIS Express. Mimo że Visual Studio 2010 SP1 obsługuje IIS Express, moja instalacja wciąż używała domyślnego serwera Visual Studio Development.

jak IIS 7, Visual Studio Development Server nie zdefiniować typ MIME mp4 domyślnie, więc dlatego mieliśmy to wyraźnie dodany w pliku web.config, tak:

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

IIS Express, na druga strona opiera się na IIS 8, a IIS 8 definiuje domyślnie mime MP4 i wiele innych. Więc kiedy mimeMap jest jawnie ustawiony w web.config, jest uważany za duplikat.

Jeśli NIE potrzebujesz obsługi IIS 7 w środowisku produkcyjnym, możesz całkowicie usunąć znacznik mimeMap z pliku web.config. Jeśli trzeba obsługiwać zarówno IIS 7 i IIS 8, a następnie można użyć znacznika usunięcia na mimeMap, a następnie ustawić go ponownie, tak:

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

W IIS 7 usunięcie nic nie zrobi, ponieważ nieprawdaż nie jest już zdefiniowany, ale w IIS 8 usunie oryginał, aby nowy nie był duplikatem. Dzięki Oliver Payen for his post on the IIS 7 and IIS 8 difference and the remove solution.

12

Po prostu usuń rozszerzenie przed dodaniem.

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

Grrrr ... mam ten problem (i większość moich kątowe kontrolerów zatrzymał załadunek) po uaktualnieniu z VS2013 do VS2015. Dodanie tej linii naprawiło to. Dziękuję Ci bardzo !! –

1

W moim przypadku, po prostu rozwiązać problem poprzez usunięcie linii, która została robi duplikat rzeczy:

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

... co jest wspaniałe, jeśli nie musisz wdrażać usług IIS 7. Rozwiązanie @ Pedro działa w usługach IIS 8 i nowszych (w zależności od rozszerzenia fileExtension). – Rap

Powiązane problemy