MVC4 Web APIプロジェクトを使用し始めましたが、複数のコントローラを持つHttpPost
メソッドがあります。コントローラは、次のようになります。ここではWeb APIコントローラで複数のHttpPostメソッド
コントローラ
public class VTRoutingController : ApiController
{
[HttpPost]
public MyResult Route(MyRequestTemplate routingRequestTemplate)
{
return null;
}
[HttpPost]
public MyResult TSPRoute(MyRequestTemplate routingRequestTemplate)
{
return null;
}
}
MyRequestTemplate
要求から入るJSONの処理を担当テンプレートクラスを表します。
エラー:私はそれが正常に動作します上記の方法のいずれかを削除した場合
Multiple actions were found that match the request
:私はhttp://localhost:52370/api/VTRouting/TSPRoute
またはhttp://localhost:52370/api/VTRouting/Route
ためのフィドラーを使用して要求を行うと
私はエラーを取得します。
Global.asaxの
私はglobal.asax
にデフォルトのルーティングテーブルを変更しようとしているが、私はまだエラーを取得しています、私は私がのglobal.asax内のルートを定義する際に問題があると思います。ここで私はglobal.asaxでやっていることです。
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapHttpRoute(
name: "MyTSPRoute",
routeTemplate: "api/VTRouting/TSPRoute",
defaults: new { }
);
routes.MapHttpRoute(
name: "MyRoute",
routeTemplate: "api/VTRouting/Route",
defaults: new {action="Route" }
);
}
私は、POSTを使用してFiddlerでリクエストを行い、MyRequestTemplateのRequestBodyにjsonを渡します。
はうまく動作します..... – yogee
IDのタイプに制限を設定したくない場合はどうすればいいですか?意味:私はどのように文字列IDも受け入れることができますか? – frapontillo
@frapontillo:IDは、ルート名から区別されるようにインテグレータでなければなりません。さもなければ、ルーティングエンジンはそれをidではなくアクション名として扱います。 idを文字列として持つ必要がある場合は、アクションを作成できます。 –