404 Ошибка при перемещении приложения ASP.NET MVC из IIS6 в IIS7 - PullRequest
2 голосов
/ 20 августа 2009

Я только что получил новую коробку разработки, и у меня возникают проблемы при запуске и запуске моего проекта MVC. В моей старой коробке был Server 2003 и IIS6. Мне удалось заставить мои приложения MVC работать на этом поле после настройки сопоставления с подстановочными знаками, как указано здесь . Моя новая коробка работает под управлением Vista Business и IIS7. Когда я скопировал свое приложение и попытался запустить его, я получил «http 404 Ресурс не найден». ошибка. Однако, если я создаю новое приложение MVC и запускаю его, все работает нормально. Я также скопировал приложение Nerd Dinner со своей старой коробки, и это тоже отлично работает.

Я проверил, что приложение работает в интегрированном режиме, и сравнил файлы web.config рабочих и нерабочих приложений, но не вижу ничего, кроме настроек приложения. Я пытался запустить приложение в классическом режиме с установленным подстановочным знаком, но это тоже не работает. Я также попытался запустить приложение с помощью Cassini, но получил те же результаты.

Ответы [ 2 ]

1 голос
/ 16 февраля 2011

Я разместил ответ в своем блоге, проверьте его на

http://nkitdugar.blogspot.com/2011/02/special-care-while-migrating-mvc.html

У меня было приложение на основе MVC, которое ранее размещалось на IIS 6. Теперь IIS 6 не поддерживает маршруты URL без расширений по умолчанию, поэтому нам нужно добавить некоторое расширение к имени контроллера в маршруте по умолчанию, определенном как {ControllerName} .aspx {Метод действия} {Id} в IIS6. Кроме того, если мы хотим использовать некоторые другие расширения, такие как .mvc и т. Д., То нам нужно отобразить их, используя такие методы, как групповые сопоставления и т. Д.

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

Поэтому, когда вы переносите приложение MVC на IIS7, убедитесь, что у маршрута по умолчанию, определенного в Globla.asax, нет расширения, определенного с помощью контроллера, такого как {controller}.aspx\{action method}\{Id}, и измените его на \clean URL route {Controller}\{Action Method}\{ID(optional)}. Во-вторых, вы должны иметь в виду, что режим конвейера AppPool веб-сайта должен быть установлен как «Интегрированный из классического».

Вот и все, теперь ваш сайт готов для размещения на IIS7.

0 голосов
/ 21 августа 2009

ОК, я разобрался с проблемой. Рассматриваемое приложение представляет собой порт приложения веб-форм для MVC как проект для проверки концепции. Таким образом, когда проект был создан впервые, мы просто добавили .MVC в конец имени проекта, чтобы сделать его {имя проекта} .MVC. Не удивительно, что теперь, когда я знаю, что происходит, возникла проблема с определениями маршрутизации по умолчанию. Я изменил имя, чтобы использовать подчеркивание вместо точки, и теперь все работает. Я предполагаю, что он работал нормально при работе под IIS6, так как он был настроен с использованием подстановочного сопоставления и, следовательно, не было расширения .MVC, чтобы его спутать.

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