ASP.NET MVC - Маршрутизация .mvc просто терпит неудачу во II6 - PullRequest
2 голосов
/ 12 ноября 2008

Я бился головой о кирпичную стену, пытаясь развернуть приложение MVC на IIS6 ( связанный вопрос )

В настоящее время я удалил сопоставление с подстановочными знаками и пытаюсь заставить работать расширение .mvc. В IIS все настроено правильно, и расширение .mvc указывает на DLL-библиотеку .NET для всех типов глаголов (непроверенная проверка, если существует опция).

Каждый раз, когда я делаю запрос, я получаю только страницу .NET 404. /Home.mvc и /Home.mvc/Index возвращают эту страницу.

Я не внес никаких изменений в стандартный Web.config, и все мои маршруты настроены на эквиваленты без расширений и на основе расширений.

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

Могут ли быть какие-то другие причины, по которым модуль / обработчик маршрутизации полностью пропускает запрос и позволяет ему перейти к стандартной ошибке .NET 404? Странные разрешения?

Для ошибок IIS 404 я обновил пользовательскую настройку ошибок, чтобы она называлась страницей Default.aspx в маршруте сайта. Это страница по умолчанию из бета-шаблона MVC, созданного в Visual Studio, который выполняет следующие действия в коде:

HttpContext.Current.RewritePath(Request.ApplicationPath);
IHttpHandler httpHandler = new MvcHttpHandler();
httpHandler.ProcessRequest(HttpContext.Current);

Это как раз тогда дает мне ошибку из предыдущего поста:

[HttpException (0x80004005): The incoming request does not match any route.]
   System.Web.Routing.UrlRoutingHandler.ProcessRequest(HttpContextBase httpContext) +15589
   System.Web.Routing.UrlRoutingHandler.ProcessRequest(HttpContext httpContext) +40
   System.Web.Routing.UrlRoutingHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context) +7
   ......

Ответы [ 5 ]

3 голосов
/ 13 ноября 2008

Моя исходная проблема была решена Оли , который указал, что файл Global.asax необходим для сайта. Я использовал NAnt / MSBuild для развертывания пакета выпуска, и файл Global.asax не был включен. Этот файл можно игнорировать во всех наших проектах .NET 2, и он был со всей нашей структурой развертывания NAnt, поэтому я не пожалел об этом.

Один на заметку на будущее. Что-то, что я не заметил, так что все заслуги Оли . Еще раз спасибо!

1 голос
/ 13 ноября 2008

Попробуйте начать с самой простой конфигурации. Измените определения вашего маршрута, чтобы использовать .aspx вместо .mvc и посмотреть, работает /home.aspx/index или нет.

0 голосов
/ 24 ноября 2009

Перезапись URL может помочь вам решить проблему. Я реализовал решение, позволяющее развернуть приложение MVC на любой версии IIS даже при использовании виртуального хостинга. http://www.codeproject.com/KB/aspnet/iis-aspnet-url-rewriting.aspx

0 голосов
/ 12 ноября 2008

Спасибо, Хьюи, тоже прошел через этот пост - все настроено одинаково.

Мои маршруты без расширений выводятся раньше расширений, просто потому, что я намереваюсь использовать модуль перезаписи ISAPI и хочу, чтобы все URL, сгенерированные из моей таблицы маршрутов, были чистыми. Затем они будут перезаписаны на основанные на расширении.

Меня даже не волнуют URL-адреса без расширений, хотя в данный момент я бы хотел, чтобы версия работала, чтобы я мог показать клиенту! Я действительно наслаждался вещами MVC до сих пор, но это сняло блеск вещей.

Еще раз спасибо за вашу помощь.

0 голосов
/ 12 ноября 2008

Я не внес никаких изменений в Web.config по умолчанию и все мои маршруты настроены с без расширения и расширение на основе эквивалентов.

Какой порядок маршрутов расширения и без расширения?

Я бы либо удалил без расширения (поскольку вы используете расширения), либо убедился, что он добавлен после маршрутов расширения (из-за первого соответствия характера маршрутизации).

Кроме того, проверьте http://www.asp.net/learn/mvc/tutorial-08-cs.aspx и просто дважды проверьте правильность настройки IIS (звучит так, как вы).

...