【发布时间】:2014-06-26 05:15:54
【问题描述】:
请帮忙。 我必须更改 Web API 的路由才能使用 URL 中的方法:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// for MVC controllers
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Editions", action = "Index", id = UrlParameter.Optional }
);
// for Web API
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
我有一个控制器
public class PositionsController : ApiController
{
[HttpGet]
public JToken Approved()
{
// some code here
}
}
对于带参数的方法,一切正常,但我不能调用像http://localhost/API/Positions/Approved 这样的无参数方法。我没有调用 Approved 方法,而是得到 404 not found 错误。我做错了什么?
有趣的部分:调用 URL http://localhost/API/Positions/Approved/whatever 有效。看来 ID 并没有我想的那么可选。
感谢您的帮助!
【问题讨论】:
-
这是您定义的唯一路线还是之前还有其他路线?
-
我刚刚构建了您的场景,它运行良好。您的应用程序中发生了更多事情。更多路由,或者控制器中的更多内容
-
你有没有碰巧把路由放到
RouteConfig而不是WebApiConfig?它们的工作方式略有不同。 -
抱歉不清楚。现在我用所有路由配置编辑了我的问题。是的,它在 RouteConfig 中。请@WeTTTT,你能解释更多吗?
标签: asp.net-mvc asp.net-mvc-routing asp.net-mvc-5 asp.net-web-api2