【问题标题】:MVC 4 Web Api Routing - Use relative path for routing URLMVC 4 Web Api Routing - 使用相对路径路由 URL
【发布时间】:2012-07-09 06:11:42
【问题描述】:

问题: 我正在尝试从 localhost:xxxx/Home/TestPage 调用 ApiController 并获得 404 请求的 URL: /Home/api/Test 找不到。

如果我从 Index.cshtml 页面进行此调用,它工作正常,我可以导航到 localhost:xxxx/api/Test 并查看所需的 JSON。我尝试将 ~/ 添加到我的 MapHttpRoute routeTemplate 中,但这会引发异常。

问题: 如何从 URL 请求中删除 /Home?

另一个例子是,如果我在页面 localhost:xxxx/People/TestPage 上并且我想点击多个 URI,例如 localhost:xxxx/api/Hobbies、localhost:xxx/api/Pets 和 locahost:xxx/api /汽车。我将如何设置自定义路由来处理这个问题?截至目前,使用默认路由时,我收到无法找到 /People/api/Hobbies 等的错误消息。

解决方案(可能): 我使用 routeTemplate: "{page}/api/{controller}/{id}" 创建了一个自定义 MapHttpRoute,它可以工作,但我不完全理解为什么以及这是否是好的做法。

【问题讨论】:

    标签: asp.net-mvc-4 asp.net-web-api


    【解决方案1】:

    Home 是您的默认 HTTP 控制器。 Home/api/Test 不是有效的 Web API 控制器路由,除非您创建了自定义路由。开箱即用的默认 Web api 路由是 api/{controller}/{id}。因此,如果您有一个名为 home 的 API 控制器,它的 URL 将是 localhost/api/home/id

    【讨论】:

    • 我还是一头雾水。如何创建自定义路线?现在 .cshtml 文件位于 Views 的主目录中。我正在尝试访问 TestController 但得到我列出的错误。我尝试将我的 routeTemplate 更改为“~/api/{controller}/{id}”,但这引发了异常。
    • 测试控制器是 API 控制器还是 HTTP 控制器?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 2012-06-22
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多