vb.net - 映射所有以特定 URL 部分/关键字开头的路由

标签 vb.net model-view-controller visual-studio-2013 url-routing asp.net-mvc-5.2

我正在为我的个人库上的各种单元测试构建一个测试中心,并且我想要一个易于访问的测试 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 Controller 时,我只需在 URL 前面加上“test/”,它就会知道将它重定向到我的“TestApisController”。 . .但它似乎打破了我的默认路线。



有没有一种方法可以将所有以“test/”开头的路由映射到特定 Controller ,同时又不破坏我的默认路由?

编辑

所以过了一段时间,我意识到这种方法不起作用的原因与路线无关。我在“WebApiConfig”文件中定义了另一个导致一些问题的默认 API 路由。抱歉,我仍在从 Webforms 过渡到 MVC。

最佳答案

由于您尝试路由到的 Controller 是 Web Api Controller ,因此您需要将自定义路由放在 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}
)

当我想在某些情况下路由到特定 Controller 并在路由上包含自定义身份验证处理程序时,我已经做了同样的事情,您尝试做的应该可以工作。

关于vb.net - 映射所有以特定 URL 部分/关键字开头的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32930204/

相关文章:

model-view-controller - 在自定义中间件中访问 TempData

c - 信息 C5012 : loop not parallelized due to reason '1008'

c++ - 标识符 calcHist() 在 C++ 的 OpenCV 中未定义

c# - "Using"语句如何从 C# 转换为 VB?

vb.net - Web.config jsonSerialization maxJsonLength 被忽略

vb.net Oracle 带参数插入 (ORA-00936 : missing expression)

vb.net - Google Drive API VB.NET 文件夹的父文件夹

javascript - 将值从 ViewModel 传递到 JavaScript

ruby-on-rails - 在模型文件中调用的辅助方法不起作用

C#无法添加MySQL数据源