Asp.net mvc ASP.MVC默认路由值匹配问题

Asp.net mvc ASP.MVC默认路由值匹配问题,asp.net-mvc,routes,Asp.net Mvc,Routes,我正在调试ASP.NET MVC中的路由匹配问题。URL的定义如下:{foo}/Somewhere/{controller}/{action}/{id}。每条管段都在管线上设置了一个默认值 当我尝试浏览路线匹配时。如果我这样做,省略foo段,则路径不匹配 我已经从Phil Haack安装了routedebugger,我可以看到我的默认设置是正确设置controller=Home,action=Index,id=UrlParameter。可选,foo=bar,但路由仍然不匹配,我得到了404 我试

我正在调试ASP.NET MVC中的路由匹配问题。URL的定义如下:{foo}/Somewhere/{controller}/{action}/{id}。每条管段都在管线上设置了一个默认值

当我尝试浏览路线匹配时。如果我这样做,省略foo段,则路径不匹配

我已经从Phil Haack安装了routedebugger,我可以看到我的默认设置是正确设置controller=Home,action=Index,id=UrlParameter。可选,foo=bar,但路由仍然不匹配,我得到了404

我试图修改路由,使其在静态段之前没有可选段,如下所示:某处/{controller}/{action}/{id}/{foo}。通过此路由,两个urlhttp://hostname/Somewhere/bar 并按预期工作

MVC中是否存在一个限制或缺陷,使我不能在硬编码的序列之前使用可选序列

谢谢你的帮助,
费边这是合乎逻辑的。您的foo占位符不能突然为空或省略。如果你问我的意见,我必须说,忽略这一点不是一件好事。这些路由必须按大小的降序映射到应用程序的模块和功能


基本上,当问题也回答时,在路由中间不能有可选的段。

我不明白为什么它不能被省略,因为我提供了一个默认值。因为它是如何设计的,主要是出于性能原因。