Asp.net mvc 4 服务路由覆盖现有路由
一个MVC模式的新手,请接受我的建议 我在Asp.net mvc 4 服务路由覆盖现有路由,asp.net-mvc-4,azure,Asp.net Mvc 4,Azure,一个MVC模式的新手,请接受我的建议 我在global.asax文件中定义了ServiceRoute RouteTable.Routes.Add(new ServiceRoute("rest", new WebServiceHostFactory(), typeof(ServiceName))); 此路由现在覆盖我的现有路由。为了更好地解释这一点,将其设置为“/rest/Controller/Action”。但这必须是“/Controller/Action” RouteEngine正在Ac
global.asax
文件中定义了ServiceRoute
RouteTable.Routes.Add(new ServiceRoute("rest", new WebServiceHostFactory(), typeof(ServiceName)));
此路由现在覆盖我的现有路由。为了更好地解释这一点,将其设置为“/rest/Controller/Action”
。但这必须是“/Controller/Action”
RouteEngine
正在Actionscalls
中追加我的ServiceRoute
如何设置精确的映射。您必须使用约束,并按正确的顺序注册路由 你可以得到一份工作 阅读时请记住,MapServiceRoute方法已消失,注册服务的方式是您选择的
您不需要实现IRouteCOnstraint。您可以使用正则表达式。如果我不必使用
irouteConstant
的话,谢谢您的输入。然后我应该像routes.IgnoreRoute(“{rest}”)那样编写代码代码>。如果我错了,请纠正我不!每个路线图都定义了“谁”来处理匹配的url。路由系统尝试匹配地图注册顺序中的url。第一个匹配的路由决定“谁”处理它,并且不再检查更多的路由。IgnoreRoute是一个特殊的映射,这意味着“noone”将处理该url,这样url将被丢弃,不再检查任何路由。这用于.axd、.asmx或网站中的任何其他特殊http处理程序。在本例中,丢弃url是很有趣的,因此它由路由表外部的东西处理。您可以直接使用“regex”而不是irouteConstraint,我尝试了这个routes.IgnoreRoute((rest)。*$”代码>但路由系统仍在拦截此不,您不能使用IgnoreRoute!!IgnoreRoute不支持正则表达式。看看这里,看看如何使用约束:你知道你刚刚保存了我的头发。