0

私は Web Api コントローラーを持っています。これは、ここに 3 つの投稿アクションとしてアクションがあります。

public HttpResponseMessage PostNewRecomendation([FromBody] PostNewRecomendationMessage newRecomendation) 
public HttpResponseMessage LikeRecomendation([FromBody] LikePostMessage likeRecomendationMessage) 
public HttpResponseMessage UnlikeRecomendation([FromBody] UnLikePostMessage unlikeRecomendationMessage)

同じルーティングに対して有効なアクションがいくつかあるというエラーが表示されます。解決策を探し回った後、機能しなかったアクションに特定のルーティングを追加しました。

config.Routes.MapHttpRoute("PostNewRecomendation", "api/{controller}/PostNewRecomendation/");
        config.Routes.MapHttpRoute("LikeRecomendation", "api/{controller}/LikeRecomendation/");
        config.Routes.MapHttpRoute("UnlikeRecomendation", "api/{controller}/UnlikeRecomendation/");

また、ActionName 属性をアクションに追加しようとしましたが、それは私が書いたルーティングと一致すると考えていましたが、それでもうまくいきませんでした。

誰でもこの作業を手伝ってもらえますか?

ありがとう

アミット

4

1 に答える 1

1

URL の 3 番目の部分 (PostNewRecomendation など) がアクションの名前に適合することは明らかですが、ルーティング システムはこれを自動的に照合しません。したがって、どのアクションを使用する必要があるかをルーティング システムに伝える必要があります。

 config.Routes.HttpRoute("PostNewRecomendation", "api/{controller}/PostNewRecomendation/", new { action = "PostNewRecomendation" });

3 つのルートを 1 つに減らすこともできます。

 config.Routes.HttpRoute("ApiRoute", "api/{controller}/{action}");

私が好むのは、attribute-routing-frameworkを使用することです。これは、特に複雑なルートが多数ある場合にはるかに簡単だからです。

于 2013-08-01T11:36:12.100 に答える