2011-01-03 2 views
2

У меня есть интересная проблема, которая, кажется, ускользает от меня.Mono asp.net MVC2 маршруты, работающие в windows .net-4.0, но не в mono-2.8

Моно xsp4 только, кажется, применяет первый маршрут для всех запросов.

Это работает на окнах:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 



    routes.MapRoute(
     "Identities", 
     "{identity}", 
     new { controller = "Identity", action = "Index" } 
     ); 

    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

    routes.MapRoute(
     "Static Routes", 
     "", 
     new { controller = "Home", action = "Index" } 
     ); 
} 

Так при запросе/thomasvjames &/Главная/О в окнах все работает нормально, но при запросе/Главная/О в моно xsp4 он по-прежнему отображает на «Удостоверения» маршрут и для параметра идентификатора установлено значение «Главная».

Так что я обнаружил (надеюсь, существующий) моно-ошибку или могу изменить порядок, чтобы сделать эту работу для обеих платформ?

Я также пробовал маршрут идентификации всех типов с ограничением, но не смог заставить это работать в моно.

[Отредактировано: The Answer] Таким образом, ответ на этот вопрос состоял в обновлении до последней доступной сборки моно. Я не использовал достаточно недавнюю сборку 2.8 (окт.), Когда мне потребовалась сборка nov.

Проблема решена, ниже работает, как ожидалось.

+0

поиска, если что-то уже существует здесь, http://www.mono-project.com/Bugs –

ответ

1

В книге MVC я указываю, что правильный подход заключается в том, чтобы добавить БОЛЬШЕ конкретных записей до МЕНЬШИХ конкретных записей, поэтому, согласно вашему порядку, вы ошибаетесь. Приведенная для этого причина - именно то, что вы описали: она перемещает список по порядку и находит первую запись, которая соответствует.

С учетом этих изменений в вашей таблице маршрутизации должна быть: `

routes.MapRoute(
    "Static Routes", 
    "", 
    new { controller = "Home", action = "Index" } 
    ); 

    routes.MapRoute(
    "Identities", 
    "{identity}", 
    new { controller = "Identity", action = "Index" } 
    ); 

    routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
    ); 
+0

Спасибо, но это были мои оригинальными маршрутизации. С его помощью каждая страница была «Главная/Индекс», и в основном у нее была такая же проблема. Я переместил «Статические маршруты» до конца, поэтому он был проигнорирован. –

+0

Это, безусловно, звучит так, будто вы нашли ошибку. Возможно, имеется доступный патч, или вы можете отправить его, если вы можете исправить проблему в Mono. – Brian

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