在URL的左侧添加带有URL令牌的MVC4路线



我正在尝试定义这样的MVC4路线:

 routes.MapRoute(
                       name: "ClientRoute" ,
                       url: "{currentClient}/{controller}/{action}.nex",
                       defaults: new { controller="Home", action = "Index" }
                    );

URL看起来像这样:http://www.mydomain.com/client34/users/view.nex

我希望它可以访问用户控制器并查看操作,但它只是抱怨它找不到页面。

update

我以前应该注意到这一点。我要求的URL是:

http://www.mydomain.com/client34/Users/View.nex

但是ASP.NET抱怨找不到的URL是:

http://www.mydomain.com/Users/View.nex

更新2

奇怪的是,这条路线确实可以用于默认为索引操作:

routes.MapRoute(
                       name: "ClientRoute-Default",
                       url: "{currentClient}/{controller}",
                       defaults: new { controller = "Home", action = "Index" }
                    );

您需要忽略.nex扩展,并将它们视为正常路由URL,而不是指向服务器上任何特定资源。为此,您应该在路由配置中添加以下行:

routes.IgnoreRoute("{*allnex}", new {allnex=@".*.nex(/.*)?"});

我相信问题是.nex扩展正在绕过MVC。您需要让MVC处理这些请求。

请查看以前对类似问题的答案:URL模式路由MVC 3

我发现了问题!谢谢所有试图协助的人!

我们的应用程序仍然使用Castle:Monorail的另一个路由模块,并且在到达MVC路由模块之前,它正在重写URL,以删除URL的客户端部分。

这导致路由失败。

我们将最终将所有内容迁移到MVC。

最新更新