ネストされた Web API ルーティングのセットアップに問題があります。
次のルーティング構成が与えられた場合:
config.Routes.MapHttpRoute(
name: "UsersGroups",
routeTemplate: "api/users/{userID}/groups/{groupID}",
defaults: new { controller = "UsersGroups", groupID = UrlParameter.Optional }
);
コントローラーのアクションは次のようになります。
public AuthGroup Get(long userID, int groupID)
{
//Get specific group here
}
public IEnumerable<AuthGroup> Get(long userID)
{
//get all groups for user here
}
このルート/api/users/1528/groups
を呼び出すと、次のエラーが発生します。
パラメータ ディクショナリに、のメソッドの
groupID
null 非許容型のパラメータのnull エントリが含まれています。オプションのパラメーターは、参照型または null 許容型であるか、オプションのパラメーターとして宣言する必要があります。System.Int32
AuthGroup Get(Int64, Int32)
UsersGroupsController
単一の長いパラメーターでアクションを取得することを期待していましたが、明らかに何らかの理由でこれを無視し、ほとんどの引数を持つものにまっすぐ進んでいます。
Web API がルートを解釈する方法について MS で入手可能なものに基づいています: http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection正しいはずですが、明らかに機能していないように見えます。