Жаль начинать знакомство с библиотеками с их проблем. Но все-же. Сегодня я расскажу о том, какие проблемы могут возникнуть, при развертывании ASP.NET MVC приложений на IIS 6 и ранних версиях. Все дело в том, что запуская и тестируя ваше приложение из студии, вы можете и не догадыватся о том, что ваше приложение не запустится на сервере. Собственно это и произошло со мной.
Все дело в маршрутизации.
По умолчанию, во всех примерах MVC вы найдете:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", Route name
"{controller}/{action}/{id}", URL with parameters
new { controller = "Customer", action = "Index", id = "" } // Parameter defaults
);
routes.MapRoute(
"DefaultTwoParameter",
"{controller}/{action}/{id}/{step}"
);
}
Что говорит классу маршрутизации об отсутствии расширений в ваших «файлах», которые запрашивает клиент. Все бы хорошо, но IIS определяет что и как надо запускать, кому и с чем нодо передовать управление именно по расширению. Так что после создания виртуальной директории будет прислан однозначный ответ 404.
Исправить это можно следушим способом:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", Route name
"{controller}.mvc/{action}/{id}", URL with parameters
new { controller = "Customer", action = "Index", id = "" } // Parameter defaults
);
routes.MapRoute(
"DefaultTwoParameter",
"{controller}.mvc/{action}/{id}/{step}"
);
}
После чего в конфигурации виртуальной директории добавить это расширение (.mvc) с тем-же обработчиком, что и у .aspx: aspnet_isapi.dll.
Настало время вспомнить, если ли места где исползуются жестко закодированные ссылки. Если таковые есть, то перечитайте заново про хелперы, которые используются в MVC.
Метки:ASP.NET, C#, разработка, Windows, интернет
Похожие статьи
- 8 марта 2011 -- C#: Silverlight таймаут (Timeout) (2)
- 12 февраля 2009 -- Мультипоточность в Windows.Forms и WPF (6)
- 15 октября 2008 -- Метод SaveOrUpdate для Linq to SQL. (3)
- 19 сентября 2010 -- StringTemplate на C# (Часть 2) (0)
- 27 ноября 2009 -- ASP.NET пейджинг. (Paging in ASP.NET) (3)
21 октября, 2009 at 2:26
Другое решение :
1. Запустите Internet IIS Manager
2. Выберите ваш сайт в дереве
3. Правой кнопкой мыши счелкнете на вашем сайте в дереве и выберите Properties.
4. Выбирите вкаладку Home Directory
5. Возле настроек апликейшона будет кнопка Configuration нажмите ее
6. Дальше в Wildcard-ах жмем Insert
6. В диалоговом окне прописываем следующее — %windir%\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll, где %windir% путь к вашей винде.
7. Снимаем галку Verify ….
8. Жмем ОК и наслаждаемся.
Если у вас русская винда, догадаетесь как делать переведя названия 🙂
1 марта, 2010 at 2:56
Забавно, но в другом решении пункт 8 тупо задизейблен :). Шо делать — не понятно.
1 ноября, 2010 at 16:29
написать расширение .mvc
29 мая, 2012 at 18:59
Кнопка OK неактивна. Почему?
22 января, 2013 at 10:03
глюк майкософта.
Поиграйтесь с галочкой Verify и фокусами текстовых полей