0

Nun, ich verwende ASP.NET Web API 2 mit Attribut-Routing. Ich habe zwei Controller mit geringfügigen Unterschied in ihren Routen:Web API Routing-Konflikt für zwei verschiedene Controller?

Ich habe alle CURD-Methoden in beiden Controllern. Jetzt funktionieren alle Methoden gut außer der POST. Jedes Mal, wenn ich versuche, POST Methode von MenuItemsController zu nennen, erhalte ich folgende Fehlermeldung:

Multiple controller types were found that match the URL. This can happen if attribute routes on multiple controllers match the requested URL.

Interessanterweise POST Methode von MenusController funktioniert perfekt in Ordnung. Es ist nur MenuItemsController 's POST Methode, die ein Problem verursacht. Ich versuchte mit Order Eigenschaft von Route auch, aber vergeblich.

Jede Hilfe wird sehr geschätzt.

EDIT: Meine POST Methoden Routen sind unten:

  • POST api/menus/
  • POST api/menus/items
+0

Ich denke, ich habe das gleiche Problem. Ich habe eine 'GET v1/Jobs /' in einem Controller und z. 'GET v1/Jobs/Materialien' und' PUT v1/Jobs/{jobID}/Materialien/{matID} 'in einem' MaterialsController', was gut funktioniert. Aber wenn ich einen PUT oder POST zum "JobsController" hinzufüge, brechen alle Controller, die das "Jobs" -Präfix in ihrem Routing verwenden, ab. –

Antwort

1

Aneeq versuchen beide Controller anschließen:

[RoutePrefix("api/menus")] 
public class MenusController : ApiController 
{ 
    [Route("")] 
    public string Get() 
    { 
     return "menus"; 
    } 
} 

[RoutePrefix("api/menus")] 
public class MenuItemsController : ApiController 
{ 
    [Route("items")] 
    public string Get() 
    { 
     return "menus items"; 
    } 
} 

Ich habe getestet und funktioniert gut. Ist das cool?

PS: Ich habe "Get" nur verwendet, um die Lösung zu vereinfachen.

+0

Ja, es funktioniert. Aber die Sache ist, meine Controller sind schon zu lang. Gibt es keinen anderen Weg, dies zu tun, während es gleichzeitig organisiert bleibt? – Aneeq

+0

ja, ich habe es ausgecheckt –

+0

Ich meine jede andere Lösung außer die Controller zu kombinieren? – Aneeq

Verwandte Themen