Dies ist, was mein Controller wie folgt aussieht:Warum funktioniert mein Attribut-Routing nicht?
[Route("api/[controller]")]
[Produces("application/json")]
public class ClientsController : Controller
{
private readonly IDataService _clients;
public ClientsController(IDataService dataService)
{
_clients = dataService;
}
[HttpPost]
public int Post([Bind("GivenName,FamilyName,GenderId,DateOfBirth,Id")] Client model)
{
// NB Implement.
return 0;
}
[HttpGet("api/Client/Get")]
[Produces(typeof(IEnumerable<Client>))]
public async Task<IActionResult> Get()
{
var clients = await _clients.ReadAsync();
return Ok(clients);
}
[HttpGet("api/Client/Get/{id:int}")]
[Produces(typeof(Client))]
public async Task<IActionResult> Get(int id)
{
var client = await _clients.ReadAsync(id);
if (client == null)
{
return NotFound();
}
return Ok(client);
}
[HttpGet("api/Client/Put")]
public void Put(int id, [FromBody]string value)
{
}
[HttpGet("api/Client/Delete/{id:int}")]
public void Delete(int id)
{
}
}
Doch wenn ich fordern Sie die URL /api/Clients/Get
wie folgt:
json = await Client.GetStringAsync("api/Clients/Get");
ich wieder die folgende Ausnahme:
AmbiguousActionException: Mehrere übereinstimmende Aktionen Die folgenden Aktionen Routendaten angepasst und waren alle Bedingungen erfüllt:
Assessment.Web.Controllers.ClientsController.Index (Assessment.Web) Assessment.Web.Controllers.ClientsController.Details (Assessment.Web) Assessment.Web .Controllers.ClientsController.Create (Assessment.Web)
Client
ist ein HttpClient
. Bitte beachten Sie, dass keine GET-Aktion trotz des gleichen Namens, id
, mit den Routendaten übereinstimmte.
Was könnte hier falsch sein?
zurückkehren mvc-5? - sieht aus wie asp.net-core-mvc –
@StephenMuecke Es ist Core, mein Fehler. Ich vermische oft MVC 5 und 6. – ProfK
Ist das die gesamte Schnittstelle von 'ClientsController'?Die 3 Aktionsmethoden in der Ausnahmebedingungsnachricht sind nicht im Codebeispiel enthalten. Wenn alle gepostet wurden, müssen wir den Rest Ihrer Routing-Konfiguration sehen, um festzustellen, welche Route die Anfrage für "api/Clients/Get" erfüllt. – NightOwl888