[解決済み】Web Apiでリクエストに一致するアクションが複数見つかった。
質問
2つのメソッド("Get")を持とうとすると、このエラーが発生します。
リクエストにマッチするアクションが複数見つかりました: webapi
この件に関する他の同様の質問をstackで見て回りましたが、理解できません。
私は2つの異なる名前を持っていて、"HttpGet"属性を使用しています。
[HttpGet]
public HttpResponseMessage Summary(MyVm vm)
{
return null;
}
[HttpGet]
public HttpResponseMessage FullDetails()
{
return null;
}
解決方法は?
あなたのルートマップは、おそらく次のようなものでしょう。 WebApiConfig.cs :
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
しかし、同じhttpメソッドで複数のアクションを行うには、次のようにルートを通じてwebapiに情報を提供する必要があります。
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
routeTemplateにアクションが含まれるようになったことに注意してください。詳しくはこちら。 http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api
更新しました。
さて、あなたが何を求めているのか理解できたと思うので、ここでもう1つ考えてみましょう。
おそらく、action urlパラメータは必要なく、別の方法で求めている内容を記述すべきです。メソッドが同じエンティティからデータを返していると言っているのですから、パラメータに記述させればいいのです。
例えば、あなたの2つのメソッドは、次のようになります。
public HttpResponseMessage Get()
{
return null;
}
public HttpResponseMessage Get(MyVm vm)
{
return null;
}
MyVmオブジェクトにどのようなデータを渡しているのでしょうか?もし、URIを通して変数を渡すことができるのであれば、そのルートを使うことをお勧めします。そうでなければ、リクエストのボディでオブジェクトを送る必要があり、それはGETを行うときに非常にHTTPではありません(それは動作しますが、MyVmの前に[FromBody]を使用するだけです)。
これで、アクション名や[HttpGet]属性を使用しなくても、ひとつのコントローラで複数のGETメソッドを使用できることがおわかりいただけたかと思います。
関連
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】プロセスが実行されているかどうかを知るには?
-
[解決済み] Home'という名前のコントローラに一致するタイプが複数見つかりました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み】HRESULTからの例外:0x800A03ECエラー
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】IntPtrとは一体何なのか?
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
[解決済み】プロセスが実行されているかどうかを知るには?