我有一个有趣的问题,似乎正在回避我。
Mono的xsp4似乎只对所有请求应用第一个路由。
这在windows上工作:
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)的最新版本。
问题解决了,下面的工作就像预期的那样。
发布于 2011-01-03 09:58:39
我的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
);https://stackoverflow.com/questions/4581495
复制相似问题