Вопрос по routing, asp.net-mvc, webforms, c# – После добавления MapPageRoute в проект asp.net mvc сайт перестает входить в Home Controller

5

Я пытаюсь направить .aspx (страницу веб-форм) в мой проект asp.net mvc. Я регистрирую страницу в global.asax:

<code>routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapPageRoute("Tickets", "Reports/Tickets", "~/WebForms/Reports/Tickets.aspx");
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
</code>

Проблема в том, что после того, как я добавляю вторую строку, сайт перестает входить в мой Home Controller (Index Action) и перенаправляет на:http://localhost:37538/Reports/Tickets?action=Index&controller=Login%22 всегда, что я запускаю проект.

Подробности проекта:

Asp.Net MVC 3 Forms Authentication .Net 4.0

Obs: чтобы воспроизвести эту ошибку, создайте новый проект asp.net mvc как интернет-приложение, после созданияTickets страница веб-форм внутри/WebForms/Reports папку и зарегистрируйте новый маршрут. Запустите проект (возможно, вы вошли), поэтому выйдите из системы, и вы будете перенаправлены наhttp://localhost:35874/Reports/Tickets?action=LogOff&controller=Accountтак зачем?

Ваш Ответ

1   ответ
10

Solved! Таким образом, нам нужно добавить маршрутное ограничение в маршрут веб-форм, чтобы он отслеживал только входящие маршруты, а не генерацию исходящих маршрутов.

Добавьте следующий класс в ваш проект (либо в новом файле, либо в нижней части файла global.asax.cs):

public class MyCustomConstraint : IRouteConstraint{
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection){
        return routeDirection == RouteDirection.IncomingRequest;
    }
}

Затем измените маршрут Билеты на следующий:

routes.MapPageRoute(
    "Tickets",
    "Reports/Tickets",
    "~/WebForms/Reports/Tickets.aspx",
    true, null, 
    new RouteValueDictionary { { "outgoing", new MyCustomConstraint() } }
);
Но конкретно о вас, я не имею. Vinicius Ottoni
+1 за включение ваших источников @ViniciusOttoni. Это помогло мне, когда я собирался просто потерять терпение. Моя проблема заключалась в вызове MapPageRoute и MapRoute в одном решении для разных проектов; Я пытался использовать смесь MVC и веб-форм. Надеюсь, это поможет другим в том же положении.
Спасибо! Это решило мои проблемы, когда я не мог больше заходить на свои страницы после добавления MapPageRoute. Кнопка отправки на странице входа фактически отправила значения в маршрут первой страницы. Есть ли у вас источник, который описывает это поведение и причины этого?
Вот несколько ссылок, которые помогают мне найти решение:dotnet.dzone.com/news/custom-route-constraint-aspnet, blogs.imeta.co.uk/MBest/archive/2010/01/06.aspx а такжеeworldui.net/blog/post/2008/04/… Vinicius Ottoni

Похожие вопросы