我正在为我的个人图书馆建立一个测试中心进行各种单元测试,我希望有一个易于访问的测试API路由。所以我的路由配置中有两个条目:默认路由和我的自定义路由......
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
我的想法是,无论何时我想调用我的测试API控制器,我都会在URL前加上&#34; test /&#34;它会知道将它重定向到我的&#34; TestApisController&#34; 。 。 。但它似乎打破了我的默认路线。
有没有办法可以映射所有以&#34; test /&#34;开头的路线?到某个特定的控制器,同时不打破我的默认路线?
所以过了一段时间,我意识到这种方法不起作用的原因与路线无关。我在&#34; WebApiConfig&#34;中定义了另一个默认的API路由。导致一些问题的文件。我道歉,我仍在从Webforms过渡到MVC。
答案 0 :(得分:0)
由于您尝试路由到的控制器是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", .action = "testme", .category = "TestCategoryOne", .testname = UrlParameter.Optional}
)
当我想在某些情况下路由到特定控制器并在路由中包含自定义身份验证处理程序时,我也做了同样的事情,你应该做的事情应该有效。