我正在为我的个人库构建各种单元测试的测试中心,并希望有一个易于访问的测试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控制器时,我只需在URL前加上“test /”,它就会知道将其重定向到我的“TestApisController”。但似乎它已经破坏了我的默认路由。
问题
有没有一种方法可以将所有以“test /”开头的路由映射到特定的控制器,同时不破坏我的默认路由?
编辑
所以过了一段时间后,我意识到这种方法无法工作的原因与路由无关。 我在“WebApiConfig”文件中定义了另一个默认的API路线,这导致了一些问题。 很抱歉,我还在从Webforms过渡到MVC。
MapHttpRoute
?我所知道的最接近的方法是添加Microsoft.AspNet.Mvc.WebApiCompatShim
,它允许你使用routes.MapWebApiRoute
。无论如何,为什么不将你的路由添加为标准路由(因为你定义了控制器和操作),并在默认路由之前声明它呢(因为测试路由比默认路由更具体)? - Daniel J.G.../test/someCategory/someTestName
可以进入testController
的someCategory
方法,并将someTestName
传递给id
参数,因为它匹配第一个(默认)路由。 - user3559349