Visual Studio 2010を使用して構築されたサイトがあります。VisualStudio 2013にアップグレードすると、いくつかのページで次のエラーが表示されます。
一意のキー属性「fileExtension」が「.mp4」に設定されたタイプ「mimeMap」の重複コレクションエントリを追加できません。
いくつかの検索の後、ブログに役立つ投稿を見つけましたが、問題が少し異なり、stackoverflowで見つけられなかったので、質問と回答をここに投稿すると思いました。
問題は、Visual Studio 2013に切り替えたときに、デバッグに使用するWebサーバーが変更されたことです。 Visual Studio 2013は、デフォルトでIIS Expressを使用します。VisualStudio 2010 SP1はIIS Expressをサポートしますが、デフォルトのVisual Studio開発サーバーを使用します。
IIS 7のように、Visual Studio Development Serverはデフォルトでmp4 mimeタイプを定義しなかったため、次のようにweb.configに明示的に追加しました。
<system.webServer>
<staticContent>
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
</staticContent>
</system.webServer>
一方、IIS ExpressはIIS 8、およびIIS 8はデフォルトでmp4 mimeタイプ、および他の多くを定義します。したがって、 mimeMapはweb.configで明示的に設定されており、重複していると見なされます。
実稼働環境でIIS 7をサポートする必要がない場合、web.configからmimeMapタグを完全に削除できます。BOTHIIS 7 and IIS 8の場合、最初にmimeMapのremoveタグを使用してから、次のように再設定できます。
<system.webServer>
<staticContent>
<remove fileExtension=".mp4" />
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
</staticContent>
</system.webServer>
IIS 7では、まだ定義されていないため、削除は何もしませんが、IIS 8では、新しいものが削除されないようにオリジナルを削除します IIS 7とIIS 8の違いと解決策の削除 。
拡張機能を追加する前に削除するだけです。
<remove fileExtension=".mp4" />
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
私の場合、重複することを行っていた行を削除するだけで問題を解決しました。
<configuration>
(...)
<system.webServer>
<staticContent>
<!--mimeMap fileExtension=".json" mimeType="application/json" /-->
</staticContent>
</system.webServer>
</configuration>