2016-04-10 36 views
1

2つの異なるGETメソッド、1つは特定のリソースを取得するためのリソースの数を取得するためのメソッドを持つときに問題が発生します。c#OWIN Web API - 要求に一致する複数のアクションが見つかりました: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) 
    { 
    } 

これは私に新しいですし、私はまたHttpResponseMessageと同様IHttpActionResultの両方を使用して間違いを犯しています知っています私はルーティングを見つけた後でそれを変更すると思った。

エラー:

Startup.csが

"api/{controller}/{action}"

を有する場合、それは "API/{コントローラ}/{ID}" である場合、それは 、見つかりません404を返し、エラーがあります。

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

答えて

2

あなたは属性ベースのルーティングを使用している場合、あなたはStartup.cs内の任意のWebAPIのルートを宣言する前に、次のコードを追加する必要があります。

config.MapHttpAttributeRoutes(); 
関連する問題