[英]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.