Подтвердить что ты не робот

ASP.NET MVC/IIS 7.5: 500 Внутренняя ошибка сервера только для статического контента

Проект ASP.NET MVC, работающий под IIS 7.5 (но проблема может существовать на более ранних версиях и сайтах, отличных от MVC), который ранее работал, начал возвращать 500 Internal Server Error, но только для контента, обрабатываемого статическим обработчиком - изображениями, страниц и т.д., обрабатываемых самим MVC через работу контроллера.

Я знаю, что вызвало это. Я документирую это, если у кого-то другая проблема.

4b9b3361

Ответ 1

Я включил отслеживание неудачных запросов и после поиска (огромного) журнала я обнаружил это:

 <EventData>
  <Data Name="ContextId">{00000000-0000-0000-3700-0080010000FC}</Data>
  <Data Name="ModuleName">CustomErrorModule</Data>
  <Data Name="Notification">536870912</Data>
  <Data Name="HttpStatus">500</Data>
  <Data Name="HttpReason">Internal Server Error</Data>
  <Data Name="HttpSubStatus">19</Data>
  <Data Name="ErrorCode">2147942583</Data>
  <Data Name="ConfigExceptionInfo">
    \\?\C:\Websites\xxx\www\web.config ( 58) :Cannot add duplicate collection 
    entry of type &apos;mimeMap&apos; with unique key attribute 
    &apos;fileExtension&apos; set to &apos;.woff&apos;
  </Data>
 </EventData>

Что случилось, новый тип Mime для обслуживания веб-шрифтов (.woff) был эксплицирован на сайт.

Впоследствии новый тип Mime (.woff) также был добавлен в глобальные типы mime IIS.

Вместо настройки веб-сайта, переопределяющей глобальную настройку, генерируется исключение.

Ответ 2

Всегда удаляйте любой тип mimetype, который вы хотите добавить, на всякий случай, если он уже определен на уровне IIS/server, например:

<staticContent>
  <remove fileExtension=".otf" />
  <mimeMap fileExtension=".otf" mimeType="application/x-font-otf" />
</staticContent>

Ответ 3

окончательно решил эту ошибку внутреннего сервера 500 при развертывании приложения MVC 3.0 на гостевом хостинге godaddy.ocm

как-то были расхождения в версии DLL, ссылки и версии, упомянутые в web.config.

Пробовал все варианты, упомянутые на разных форумах, ничего не помогло, хотя все предлагали подобные исправления, но как-то не работали в моем сценарии. наконец, после того, как я ударил головой 2 дня. Я решил удалить всю ссылку dll и удалить web.cofig(сделать локальную копию) из проекта и позволить ошибке запуска приложения, а затем добавить dll один за другим, сделав копию в local = true. после того, как все DLL добавлены. Я создал новое приложение asp.net mvc и скопировал web.config нового приложения в свое фактическое приложение. поэтому у моего фактического приложения теперь есть новый web.config, затем я скопировал строку соединения и другую ссылку из локальной копии файла web.config, который я сохранил.

просто скомпилировал приложение и опубликовал его в локальной папке и FTP опубликованная папка goDaddy

Это сработало, и, наконец, моя проблема была решена.

Надеюсь, это поможет людям, и они не теряют 2 дня, как я,