Ошибка маршрутизации при смешивании веб-форм и MVC
Я работаю над веб-приложением Web Forms со смешанным кодом в MVC. Я следовал инструкциям на этой странице http://www.packtpub.com/article/mixing-aspnet-webforms-and-aspnet-mvc и он отлично работает на сервере разработчиков VS2010, но когда я пытаюсь опубликовать его на включенном MVC Браузер IIS 6 не автоматически перенаправляется на default.aspx после входа в систему, и в корне приложения появляется ошибка 404.
Мой Global.asax.cs выглядит так:
protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
}
Если я закомментирую вызов RegisterRoutes в методе Application_Start, автоматическое перенаправление на default.aspx сработает, но тогда MVC-компоненты не будут работать.
Мне нужна помощь с настройкой маршрутизации для включения автоматического перенаправления на default.aspx при включении маршрутизации MVC. Детали MVC расположены по определенному пути, например так: myserver / applicationname / mvcparts.
Asp.Net MVC 3 устанавливается как на компьютере разработчика, так и на сервере, где я публикую.
1 ответ
Это связано с тем, что IIS6 по умолчанию не поддерживает URL без расширений. Вам нужно будет настроить его. И если вы не используете ASP.NET 4, это для вас. Если вы не настроите это; IIS6 этого не знает /Home/Index
должны быть связаны с aspnet_isapi
фильтр. Он даже не знает, что это приложение ASP.NET. Вот почему в классических веб-формах они использовали .aspx
расширение, которое связано с фильтром aspnet_isapi при установке.NET.
URL-адреса без расширения поддерживаются IIS7+ "из коробки" при работе в режиме интегрированного конвейера.