Получение ошибки 404 на веб-сайте MVC

У меня есть IIS7.5 веб-сайт в Windows Server 2008 с ASP.NET на нем развернут веб-сайт MVC2. Веб-сайт был построен в Visual Studio 2008, ориентированный на .NET 3.5, и IIS 5.1 был успешно настроен для его запуска для локального тестирования.

однако всякий раз, когда я пытаюсь перейти на страницу, работающую в IIS7, я получаю ошибку 404.

Я проверил следующие вещи:

  • в IIS нет соответствующей записи журнала 404 системный журнал.
    • на самом деле, есть are 404 записи в журнале IIS.
  • пул приложений для веб-узел настроен на использование интегрированного конвейера.
  • режим "customErrors"установлен в off.
  • .Net 3.5 с пакетом обновления 1 установлен
  • ASP.NET установлен MVC 2
  • Я использовал диагностику MVC для подтверждения того, что все библиотеки MVC найдены.
  • ASP.NET включено в IIS, который мы продемонстрировали, запустив страницу диагностики MVC.
  • KB 2023146 выделил, что перенаправление HTTP было выключено, поэтому мы включили его, но без радости.

редактировать Итак, мы установили самое простое в мире приложение MVC (то, которое создается при создании нового проекта MVC2 в Visual Studio), и мы все еще получаем 404s на любой странице, к которой мы пытаемся получить доступ , например <my_server>/Home/About будет генерировать 404.

любые идеи будут очень признателен!

13 ответов


Это довольно часто вызвано следующим отсутствием в интернете.config:

<system.webServer>
   <modules runAllManagedModulesForAllRequests="true"/> 

У вас есть проблема только с 1 страницей или весь сайт не работает?

A) 1 страница

  • можно использовать RouteDebugger чтобы проверить, правильно ли совпадает маршрут

B) весь сайт

  • Я предполагаю, что вы используете Windows Server-проверьте, если ASP.NET включен в IIS - он отключен по умолчанию, я считаю.

  • вы можете использовать MvcDiagnostics страница, чтобы проверить, правильно ли развернуты все библиотеки DLL.

  • вы работаете в IIS7 встроенный режим? Классический режим IIS7 автоматически не сопоставляет URL-адреса без расширения ASP.NET (очень похоже на IIS6)

  • убедитесь, что ваш Web.config тег правильно настроен.


мы, наконец, прибили эту проблему, экспортируя конфигурацию IIS рабочего сервера и сравнивая ее с нашей.

Это был очень неясный параметр, который был изменен по умолчанию.

корень → функция фильтрации запросов IIS → расширения → вкладка "редактировать параметры объекта" → разрешить расширения

Это должно быть отмечено.

Это может быть установлено на уровне IIS или на уровне сайта.

Screenshot of IIS showing location of Request Filtering option


рад, что решил вашу проблему. Другие исследования этой проблемы следует принять к сведению исправление URL без расширения:http://support.microsoft.com/kb/980368


оформление заказа КБ 2023146 относится к вашей ситуации. Также попробуйте запросить непосредственно действие контроллера:/yoursitename/home/index


Если ни одно из других решений здесь не решило вашу проблему, проверьте, что у вас есть

глобальные.асакс

файл на вашем сайте. Это решило проблему для меня.


видимо, это может иметь много разных причин.

для нас проблема заключалась в том, что запись DNS была настроена для двух IP-адресов, но конфигурация IIS будет прослушивать только один из них. Поэтому мы получили непредсказуемые результаты, иногда это работало, иногда несколько файлов (css и т. д.) не загружались, а иногда и вся страница не загружалась.


для меня это было все об установке .NET Framework 4.6.1 на сервере (мое приложение было нацелено на эту версию)


вы также получите это, если ваши привязки не верны. Если у вас нет www или поддомена, он вернет 404.


У меня была эта проблема при запуске моего сайта MVC4 с пулом приложений, установленным на ASP.NET 4.0 и классический конвейер, хотя обработчики расширений были установлены в моей сети.config и правильно показывались в IIS. Сайт работал в интегрированном конвейере, поэтому я знал, что это проблема конфигурации, но я не мог ее прибить. Наконец-то я это понял. ASP.NET 4 был отключен для сервера в настройках ограничений ISAPI и CGI. I включено ASP.NET 4.0 и это сработало.


в дополнение к проверке, если вы работаете в режиме интегрированного конвейера, убедитесь, что ваш пул приложений настроен на использование .NET! Недавно я столкнулся с этой проблемой, и когда я вошел, чтобы проверить настройки пула приложений, я обнаружил, что каким-то образом он был установлен на "нет управляемого кода.- Упс!

enter image description here


моя хостинговая компания исправила это для меня, сделав это (я удалил исходное значение пароля, конечно).

  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication password="<password>" />
      </authentication>
    </security>
  </system.webServer>

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


сегодня, однако, я случайно создал виртуальный каталог в IIS.

Это должно быть приложение, щелкните правой кнопкой мыши на виртуальном каталоге (со значком папки) - > конвертировать в приложение:

enter image description here