2016-04-10 12 views
1

Ich habe ein Problem beim Versuch, zwei verschiedene GET-Methoden zu haben, eine zum Abrufen einer Anzahl von Ressourcen, eine zum Abrufen einer bestimmten Ressource.C# OWIN Web API - Es wurden mehrere Aktionen gefunden, die der Anfrage entsprechen: GET

Startup.cs

config.Routes.MapHttpRoute("DefaultAPI", 
      "api/{controller}/{action}", 
      new { id = RouteParameter.Optional }); 

Controller.cs

[RoutePrefix("api/Files")] 
public class FileController : ApiController 
{ 
    // /api/Files/ 
    [Authorize] 
    [Route("")] 
    public IHttpActionResult GetAll() 
    { 

    } 

    // /api/Files/Id/ 
    [Authorize] 
    [Route("Id")] 
    public async Task<HttpResponseMessage> Get([FromBody] string id) 
    { 
    } 

    // /api/Files/Upload 
    [Authorize] 
    [HttpPost] 
    [Route("Upload")] 
    public async Task<HttpResponseMessage> Post() 
    { 
    } 

    // /api/Files/Delete 
    [Authorize] 
    [Route("Delete")] 
    public IHttpActionResult Delete([FromBody] string id) 
    { 
    } 

Das ist neu für mich, und ich weiß, dass ich auch so gut wie HttpResponseMessage einen Fehler bei der Verwendung von sowohl IHttpActionResult machen aber ich dachte mir, dass ich das später ändern würde, nachdem ich das Routing herausgefunden habe.

Fehler:

Wenn Startup.cs

hat

"api/{controller}/{action}"

, es gibt eine 404 nicht gefunden, , wenn es "api/{Controller}/{id}", der Fehler ist:

Multiple actions were found that match the request: \r\nGetAll

Antwort

2

Wenn Sie attributbasierte Routing verwenden, müssen Sie den folgenden Code hinzufügen, bevor Sie irgendwelche WebAPI Routen in Startup.cs erklären:

config.MapHttpAttributeRoutes(); 
Verwandte Themen