簡體   English   中英

Web API路由問題

[英]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/xapi/Video/GetVideoByID/x

您可能需要在“路由變體”>“按操作名稱路由”下閱讀此內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM