2016-05-20 71 views
-1

我使用属性路由,其中​​,所述编译器显示错误具有问题2版本“类型‘ValuesController’已经定义了一个名为‘获取’具有相同的参数类型构件”。网页API使用属性路由

我已经检查了config.MapHttpAttributeRoutes()是在webapiConfig文件

// GET api/values/5 
    [Route("api/values/{id}")] 
    public string Get(int id) 
    { 
     return "value"; 
    } 

    [Route("api/v2/values/{id}")] 
    public string Get(int id) 
    { 
     return "value"; 
    } 

从阅读http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2这样的事情应该是可能的。

回答

1

你的代码是无效的C#,甚至除了网页API。您不能两次定义相同的函数签名。如果第二个Get重命名为GetNew,或将其移动到不同的控制器,它应该工作。

+0

我改变第二获取到GetV2和完美的作品。 – Jay1b

1

的问题,在我看来,就是你有两种方法具有相同的名称和参数,这是不是在C#允许的 - 如果你真的必须有相同的方法名,你需要重载的数量的参数,和/或它们的类型:

public string Get(int id, int id2) 

或者

public string Get(Guid id)