3

ASP.NET Web APIは初めてですが、1つのコントローラーに2つのgetメソッドを追加しようとすると、アクションの取得に失敗するという問題が発生しています。同じメソッドのオーバーロードを追加しない限り、コントローラーごとに1つのgetのみが許可されますか?

これは、getメソッドが1つしかない場合、たとえば最初のメソッドの場合に機能します。2番目のメソッド名にGetを追加するとすぐに、500が返されます。

[HttpGet]
public string GetToday()
{
    return "Hello today";
}

[HttpGet]
public string GetPending()
{
    return "Hello Pending";
}

私がかけている電話:http: //abc.com/api/tasks/gettoday http://abc.com/api/tasks/getpending

[HttpGet]属性を設定する限り、メソッド名が「Today」の場合にこの呼び出しを行うことができます。ただし、2番目のアクションがない場合に限ります。つまり、2番目のメソッドから[HttpGet]属性を削除し、メソッド名から「Get」を削除して保留中の場合は、機能します。

2つのgetメソッドがあるとすぐに、このエラーが発生します。

{"Message": "エラーが発生しました。"、 "ExceptionMessage": "リクエストに一致する複数のアクションが見つかりました:\ r \ nSystem.String TodaysTasks()on type TaskTrackerService.Controllers.TasksController \ r \ nSystem.StringPendingTasks ()on type TaskTrackerService.Controllers.TasksController "、" ExceptionType ":" System.InvalidOperationException "、" StackTrace ":" at System.Web.Http.Controllers.ApiControllerActionSelector.ActionSelectorCacheItem.SelectAction(HttpControllerContext controllerContext)\ r \ n at System .Web.Http.Controllers.ApiControllerActionSelector.SelectAction(HttpControllerContext controllerContext)\ r \ n at System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext、CancellationToken cancelToken)\ r \ natSystem.Web.Http.Dispatcher。HttpControllerDispatcher.SendAsyncInternal(HttpRequestMessage request、CancellationToken cancelToken)\ r \ n at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(HttpRequestMessage request、CancellationToken cancelToken) "}

4

1 に答える 1