我有一个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属性添加到认为它与我编写的路由匹配的操作中,但仍然没有。
任何人都可以帮我做这项工作吗?
由于
阿米特
答案 0 :(得分:1)
很明显,网址的第三部分,例如PostNewRecomendation符合操作的名称,但路由系统不会自动匹配此操作。因此,您必须告诉路由系统必须使用哪个操作。
config.Routes.HttpRoute("PostNewRecomendation", "api/{controller}/PostNewRecomendation/", new { action = "PostNewRecomendation" });
您还可以将三条路线缩减为一条:
config.Routes.HttpRoute("ApiRoute", "api/{controller}/{action}");
我更喜欢使用attribute-routing-framework,因为它更容易,特别是如果你有很多复杂的路线。