Ошибка 404 на сайте MVC - PullRequest
       8

Ошибка 404 на сайте MVC

11 голосов
/ 21 февраля 2011

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

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

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

  • Нет соответствующей записи журнала 404 в журналах IIS.
    • На самом деле - это 404 записи в журнале IIS.
  • Пул приложений для веб-сайта настроен на использование Интегрированного конвейера.
  • Режим «customErrors» отключен.
  • .NET 3.5 SP1 установлен
  • ASP.NET MVC 2 установлен
  • Я использовал MVC Diagnostics для подтверждения того, что все MVC DLL найдены.
  • ASP.NET включен в IIS, что мы продемонстрировали, запустив страницу диагностики MVC.
  • KB 2023146 сделалвыделите, что перенаправление HTTP было отключено, поэтому мы его включили, но без радости.

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

Любые идеи будут высоко оценены!

Ответы [ 14 ]

14 голосов
/ 07 мая 2013

Это часто вызвано отсутствием в файле web.config следующего:

<system.webServer>
   <modules runAllManagedModulesForAllRequests="true"/> 
10 голосов
/ 21 февраля 2011

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

A) 1 страница

  • Вы можете использовать RouteDebugger для проверки правильности сопоставления маршрута

B) Весь сайт

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

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

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

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

8 голосов
/ 01 марта 2011

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

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

IIS ROOT → Фильтрация запросов → Вкладка «Расширения имен файлов» → «Редактировать настройки функций» → Разрешить добавление имен файлов в незарегистрированные списки

. Необходимо установить этот флажок.

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

Screenshot of IIS showing location of Request Filtering option

3 голосов
/ 07 марта 2017

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

Global.asax

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

3 голосов
/ 04 марта 2011

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

2 голосов
/ 21 февраля 2011

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

1 голос
/ 04 ноября 2016

Для меня все было связано с установкой .NET Framework 4.6.1 на сервере (мое приложение предназначалось для этой версии)

1 голос
/ 05 ноября 2013

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

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

0 голосов
/ 12 июня 2019

Не использовать runAllManagedModulesForAllRequests .Вы хотите, чтобы IIS обрабатывал такие ресурсы, как изображения.

<system.webServer> <!-- Rather do NOT use this -->
  <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

Вместо этого добавьте модуль маршрутизации MVC

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>
0 голосов
/ 03 мая 2018

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


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

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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...