通話時
http://mysite.com/Project/42
以下のルーティングとメソッドについては、「要求に一致する複数のアクションが見つかりました...Get(Int32)...Children(Int32)」が表示されます
通話中
http://mysite.com/Project/42/Children
正しく戻ります。
私のルーティングは次のとおりです。
config.Routes.MapHttpRoute(
name: "ForChildren",
routeTemplate: "api/{controller}/{id}/Children",
defaults: new { action = "Children" }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
そして私の方法:
public class ProjectController : ApiController {
public IEnumerable<Project> Get(int id){
...
}
[HttpGet]
public IEnumerable<Project> Children(int id) {
...
}
}
アクションを指定しないと、Webapi がデフォルトでメソッド (GET) になると思いました。現在、Webapi は名前を無視してメソッドを実行しているように見え、パラメーターの一致のみを探しています。私は本当にそれを信じていません。