4

ネストされた 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を呼び出すと、次のエラーが発生します。

パラメータ ディクショナリに、のメソッドのgroupIDnull 非許容型のパラメータのnull エントリが含まれています。オプションのパラメーターは、参照型または null 許容型であるか、オプションのパラメーターとして宣言する必要があります。System.Int32AuthGroup Get(Int64, Int32)UsersGroupsController

単一の長いパラメーターでアクションを取得することを期待していましたが、明らかに何らかの理由でこれを無視し、ほとんどの引数を持つものにまっすぐ進んでいます。

Web API がルートを解釈する方法について MS で入手可能なものに基づいています: http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection正しいはずですが、明らかに機能していないように見えます。

4

1 に答える 1

7

(ASP.NET MVC からRouteParameter.Optional) ではなく、(Web API から)使用する必要があります。UrlParameter.Optional

すべてがあなたの望むように動作します。

より詳しい情報:

于 2013-01-30T02:58:40.957 に答える