2010-07-19 5 views
0

У меня есть существующее приложение ASP.Net, в которое я пытаюсь представить MVC2.Знакомство с MVC в ASP.Net - ошибка 404

Надеюсь, я помню шаги, но то, что я сделал следующее:

  1. Created фиктивный проект MVC2.
  2. Сравнение и объединение .csproj, в результате чего команды Add Item отображают элементы MVC2.
  3. По сравнению и слили web.config
  4. сравнены и слил Global.asax.cs
  5. Добавлены модели, представления и контроллеры каталоги
  6. Добавлена ​​HostController с действием индекса и index.aspx (без логики)
  7. Измененный маршрут, чтобы сделать/Host/Индекс по умолчанию

Итак, теперь, когда я получить доступ к приложению через корневой адрес http://localhost/MyApp все это работает.

Но, когда я получаю доступ http://localhost/MyApp/Host/Index Я получаю ошибку 404. Я получаю тот же результат для любого из созданных мной контроллеров/действий. Единственный способ заставить их появиться - использовать настройки по умолчанию в конфигурации маршрутизации. Я установил Phill Haack's route debugger, и он ничего не делает. Очевидно, есть некоторые проблемы с моей маршрутизацией, но я не могу понять это.

Любые идеи, что я пропустил?

+0

Интересный поворот. Если я использую http: //localhost/MyApp/Host/Index/default.aspx, он отлично работает. –

+0

Фактически, добавление любого файла .aspx в конец URL-адреса заставляет его работать. Даже если этого не существует. –

ответ

0

Бах ... выясняется, что это связано с маршрутизацией IIS 5.1 и MVC.

Я разрешил его, используя следующие маршруты в моем приложении (обратите внимание на расширения .aspx).

routes.MapRoute("Root", "", new { controller = "Host", action = "Index" }); 
routes.MapRoute("Default", "{controller}/{action}.aspx", new { controller = "Host", action = "Index" }); 

Значит, у меня нет чистых маршрутов, но, по крайней мере, это работает.

Смежные вопросы