我正在我的个人图书馆建立各种单元测试的测试中心,我想要一个易于访问的测试API路由.所以我在路由配置中有两个条目:默认和我的自定义路由…
routes.MapRoute( name:="Default",url:="{controller} / {Action} / {id}",defaults:=New With {.controller = "Home",.action = "Index",.id = UrlParameter.Optional} ) routes.MapHttpRoute( name:="UnitTests",routeTemplate:="test/{category}/{testname}",defaults:=New With {.controller = "TestApis",.action = "testme",.category = "TestCategoryOne",.testname = UrlParameter.Optional} )
这个想法是,每当我想打电话给我的测试API控制器时,我只需使用“test /”添加该URL,它将知道将其重定向到我的“TestApisController”. . .但似乎已经破坏了我的默认路由.
题
有没有办法可以将所有以“test /”开头的路线映射到特定的控制器,同时不会破坏我的默认路由?
编辑
所以经过一段时间,我意识到这种方法不起作用的原因与路线无关.我在“WebApiConfig”文件中定义了另一个默认的API路由,导致一些问题.我很抱歉,我仍然从Webforms转换到MVC.
由于您尝试路由到的控制器是Web Api控制器,因此您将要将自定义路由放在WebApiConfig.vb文件中.路由应该超过该文件中的默认路由,因为它比默认路由更具体,如@Stephen Muecke所指出的.你的原始代码会改变一点,而不是routes.MapHttpRoute你会有config.Routes.MapHttpRoute,像这样:
config.Routes.MapHttpRoute( _ name:="UnitTests",_ routeTemplate:="test/{category}/{testname}",_ defaults:=New With {.controller = "TestApis",.testname = UrlParameter.Optional} )
在某些情况下,当我想要路由到特定的控制器时,我也做了同样的事情,并且在路由上还包括自定义的认证处理程序,你想做什么应该工作.