2016-05-20 11 views
-1

Ich habe ein Problem mit Attribut-Routing, wo der Compiler den Fehler zeigt "Typ 'ValuesController' definiert bereits ein Mitglied namens 'Get' mit den gleichen Parametertypen".web api 2 Versionierung mit Attribut-Routing

Ich habe überprüft, dass config.MapHttpAttributeRoutes() in der Datei webapiConfig ist

// 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"; 
    } 

Aus der Lektüre http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2 so etwas wie dies möglich sein sollte.

Antwort

1

Ihr Code ist ungültig C#, auch abgesehen von Web-API. Sie können die gleiche Funktionssignatur nicht zweimal definieren. Wenn Sie die zweite Get in GetNew umbenennen oder auf einen anderen Controller verschieben, sollte es funktionieren.

+0

wechsle ich die 2. perfekt GetV2 und das funktioniert Get. – Jay1b

1

Das Problem, wie ich sehe, ist, dass Sie zwei Methoden mit dem gleichen Namen und Argumente, die in C# nicht erlaubt ist - wenn Sie wirklich die gleichen Methodennamen haben müssen, müssen Sie die Zahl überladen von Argumenten und/oder deren Typen:

public string Get(int id, int id2) 

oder

public string Get(Guid id)