繁体   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