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 的第三部分,例如 PostNewRecomendation,适合动作的名称,但路由系统不会自动匹配它。因此,您必须告诉路由系统必须使用哪个操作。

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

您还可以将三种路线减少为一种:

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

我更喜欢使用attribute-routing-framework,因为它更容易,特别是如果你有很多复杂的路线。

于 2013-08-01T11:36:12.100 回答