2

この質問は以前に何度も聞かれたことを知っています。しかし、私には別の問題があります。

ASP.NET Web API で複数の GET メソッドを持つ単一のコントローラー

上記のリンクの投稿で提供されている手順を既に実行しましたが、API リンクの形式は api/servicename/controller です。

また、投稿で指定されたルートは api/controller 形式です。誰でもこれを整理するのを手伝ってくれませんか。実際にルートをサービスの正確な名前に置き換えましたが、役に立ちませんでした。

4

1 に答える 1

2

ルートを api/controller/action として記述する代わりに、以下の方法で記述しました。リンクからコードブロックを取得しましたhttp://lonetechie.com/2013/03/04/fixing-multiple-actions-were-found-that-match-the-request-aspnet-webapi/リンクを指します私は元の投稿で与えました。

config.Routes.MapHttpRoute("DefaultApiWithAction", "{controller}/{action}", new { action = "Get" });
config.Routes.MapHttpRoute("DefaultApi", "{controller}/{id}", new { id = RouteParameter.Optional }, new { id = @"\d+" });
config.Routes.MapHttpRoute("DefaultApiGet", "{controller}", new { action = "Get" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) });
config.Routes.MapHttpRoute("DefaultApiPost", "{controller}", new { action = "Post" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Post) });
config.Routes.MapHttpRoute("DefaultApiPut", "{controller}", new { action = "Put" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Put) });
config.Routes.MapHttpRoute("DefaultApiDelete", "{controller}", new { action = "Delete" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Delete) });
于 2013-05-09T03:48:27.690 に答える