ich zwei Controller haben wie folgt:Ungewöhnliche [RoutePrefix] Verhalten in ASP.NET WebAPI
[RoutePrefix("v1/user/something")]
public class SomethingsController : ApiController
{
[Route("{id}")]
[HttpGet]
[ResponseType(typeof(SomethingsViewModel))]
public async Task<IHttpActionResult> GetAsync([FromUri]int id)
{
}
}
[RoutePrefix("v1/user")]
public class UserController : ApiController
{
[Route("{id}")]
[HttpGet]
[Authorize(Roles = "Super Admin")]
public async Task<IHttpActionResult> GetByIdAsync([FromUri]int id)
{
}
}
nun von oben Blick auf den Code, würde ich denken, dass die folgenden zwei Routen erstellt werden:
- v1/user/etwas/{id}
- v1/user/{id}
Aber leider aus irgendeinem Grund, dass es keine Das ist der Fall. Ich erhalte die folgende Ausnahmemeldung bei dem Versuch, eine der oben genannten Strecken zuzugreifen:
Multiple Controller-Typen wurden gefunden, die mit der URL übereinstimmen. Dies kann passieren, wenn Attributrouten auf mehreren Controllern mit der angeforderten URL übereinstimmen. Die Anforderung folgende Anpasssteller Typen gefunden: MyProject.Api.Controllers.UserController, MyProject.Api.Controllers.SomethingsController
Bitte helfen Sie mir in herauszufinden, was ich vielleicht falsch, oder die am kleinen Detail tun I hier fehlt.
Im Falle des Attribut-Routing versucht die Web API alle Controller zu finden, die einer Anfrage entsprechen. Wenn es sieht, dass mehrere Controller in der Lage sind, damit umzugehen, dann löst es eine Ausnahme aus –
@Div Ich weiß, dass das Problem ist, dass wenn Sie sich den obigen Code ansehen, mehrere Controller nicht in der Lage sein sollten, da RoutePrefix zu behandeln sind anders. – haseebahmed7
@ haseebahmed7 obwohl ihr Routenpräfix unterschiedlich ist, stimmen ihre aufgelösten Routen überein.zum Beispiel 'v1/user/{id}' mit der Übereinstimmung 'v1/user/sound/{id}', wobei id parameter arg in der ersten Route 'something/{id}' braucht. Routenpräfix und Routenattribute werden kombiniert, um eine vollständige Route zu erstellen, die zur Routentabelle hinzugefügt wird. – Nkosi