1

问题: 我试图从 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/Vehicles。我将如何设置自定义路由来处理这个问题?截至目前,使用默认路由时,我收到无法找到 /People/api/Hobbies 等的错误消息。

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

4

1 回答 1

0

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

于 2012-07-09T19:48:59.393 回答