首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单声道asp.net MVC2路由在windows .net-4.0中工作,但在单声道-2.8中不起作用

单声道asp.net MVC2路由在windows .net-4.0中工作,但在单声道-2.8中不起作用
EN

Stack Overflow用户
提问于 2011-01-03 09:24:13
回答 1查看 560关注 0票数 2

我有一个有趣的问题,似乎正在回避我。

Mono的xsp4似乎只对所有请求应用第一个路由。

这在windows上工作:

代码语言:javascript
复制
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" }
        );
}

因此,当在windows中请求/thomasvjames & /Home/About时,一切都正常工作,但是当在mono xsp4中请求/Home/About时,它仍然映射到“identity”路由,并且identity参数被设置为"Home“。

那么,我是否发现了(希望存在的)单声道bug,或者我可以重新安排我的路线,使其在两个平台上都能工作?

我还尝试了带约束的捕获所有类型身份路由,但也无法在单声道中工作。

编辑:这个问题的答案是,升级到mono的最新版本。当我需要nov build时,我没有使用2.8 (oct)的最新版本。

问题解决了,下面的工作就像预期的那样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-03 09:58:39

我的MVC书指出,正确的方法是将较具体的条目放在较不具体的条目之前,因此根据您的排序是错误的。这样做的原因正是您所描述的:它按顺序遍历列表,并找到第一个匹配的条目。

通过这些更改,您的路由表应该是:`

代码语言:javascript
复制
    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
    );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4581495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档