[英]Web API routing issue
我有一个VideoController,其中有2个方法,如下所示:
[Route("api/Video/{id:int}")]
public Video GetVideoByID(int id){ do something}
[Route("api/Video/{id}")]
public Video GetVideoByTitle(string id) {do something}
WebApiConfig.cs如下所示:
public const string DEFAULT_ROUTE_NAME = "MyDefaultRoute";
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: DEFAULT_ROUTE_NAME,
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
因此,当我注释掉任何一个方法时,另一个方法可以工作,就像你完全注释掉第一个方法一样,第二个方法有效,但是两个方法在实现时都不起作用。 我使用了一个Empty Web API模板。
所以关于为什么会发生这种情况的任何想法都会很棒。
您必须在配置期间启用调用MapHttpAttributeRoutes的属性路由。
例:
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
...
}
我已经测试过并正确地为我工作了:
http://localhostapi/Video/1 // goes for the first method
http://localhostapi/Video/foo // goes for the second method
routeTemplate
更改您的routeTemplate
routeTemplate: "api/{controller}/{id}",
至
routeTemplate: "api/{controller}/{action}/{id}",
所以你打电话给api/Video/GetVideoByTitle/x
或api/Video/GetVideoByID/x
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.