ASP.NET MVC Маршрутизация - перенаправление на ASPX?
-
23-09-2019 - |
Вопрос
Кажется, это должно быть легко, но по какой -то причине мне не повезло. Я перемещаю существующее приложение WebForms в MVC, поэтому мне нужно сохранить корень сайта, указывающего на мои существующие страницы ASPX на данный момент и только применять маршрутизацию к названным маршрутам. Вот что у меня есть:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
RouteTable.Routes.Add(
"Root",
new Route("", new DefaultRouteHandler())
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Calendar2", action = "Index", id = "" } // Parameter defaults
);
}
Таким образом, страницы ASPX должны быть проигнорированы, и этот обработчик должен обрабатывать корневой URL -адрес по умолчанию:
public class DefaultRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(
"~/Dashboard/default.aspx", typeof(Page)) as IHttpHandler;
}
}
Кажется, это работает нормально, но полученный YPOD дает мне это:
Было найдено несколько элементов управления с одним и тем же идентификатором. Трейс требует, чтобы элементы управления имели уникальные идентификаторы.
что, кажется, подразумевает, что страница каким -то образом выполняется дважды. Если я просто ввожу URL -адрес на странице панели панели, он работает нормально (без маршрутизации, без ошибок). Я понятия не имею, почему код обработчика будет делать что -то по -другому.
Итог - я хотел бы просто перенаправить путь URL -адреса корня на ASPX по моему выбору - может ли кто -нибудь пролить свет?
Решение 2
Хмммм. Таким образом, мой браузер разбился по какой -то не связанной причине, и теперь, когда я перезапустил его, вышеупомянутый код, похоже, работает отлично, как и ожидалось. Я совершенно не замечен тем, как код на стороне сервера теперь будет действовать по-другому из-за перезапуска браузера (очевидно, что-то было неверно кэшировано неправильно), но, похоже, это сейчас не проблема.
РЕДАКТИРОВАТЬ: Ну, это на самом деле все еще проблема - не уверен, почему это работало раньше, но это немного случайно. Суть, кажется, заключается в том, что MVC, похоже, не хорошо играет с Trace.Axd Sanger в некоторых обстоятельствах, которые в противном случае производят совершенно действительную разметку. У меня действительно нет хорошего объяснения, но отключение отслеживания в web.config обходит ошибку. Для моих целей на данный момент это достаточно хорошо, но я хотел бы услышать лучшее объяснение кого -то другого ...
Другие советы
Я не совсем понимаю вашу проблему, может быть, я не достаточно опытен. В любом случае я попробую ...;)
Если вы хотите перенаправить из корневого пути, почему бы не использовать документ по умолчанию из IIS, поместите его на index.aspx, например, а затем добавьте на эту страницу ответ. РЕСПРАВЛИТЬ на страницу, на которую вы хотите перенаправить?