我正在尝试定义这样的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。