2016-05-23 6 views
0

私達は私達のAPIにVersionedRoutesを実装しようとしていると、クラスで私たちのルートを宣言しているよう:同じ名前を持つWeb APIのカスタムルートが異なるHTTPメソッド

:コントローラメソッドは同じように宣言されている

new VersionedRoute(
    version, 
    "GetRiskReports", 
    "/Members/{id}/Cpin/RiskReports", 
    new RouteValueDictionary 
    { 
     {"controller", "Members"}, 
     {"action", "GetRiskReports"}, 
     {"id", RouteParameter.Optional} 
    }), 
new VersionedRoute(
    version, 
    "PostRiskReports", 
    "/Members/{id}/Cpin/RiskReports", 
    new RouteValueDictionary 
    { 
     {"controller", "Members"}, 
     {"action", "PostRiskReports"}, 
     {"id", RouteParameter.Optional} 
    }) 

明らかに現時点では、URL/Members/123/Cpin/RiskReportsへのGETリクエストは、最初のルートokまでルーティングされますが、POSTメソッドは最初のルートではなくコントローラメソッドGETのみとしてマークされています。とにかくカスタムルートにHTTPメソッドを追加しますか?クライアントはルート名を変更したくない。あなたのRouteConfig.cs

答えて

1

、そのような設定を登録します。

config.Routes.MapHttpRoute("GetRiskReports", "Members/{id}/Cpin/RiskReports" , 
     new { 
      controller = "Members", 
      action = "GetRiskReports" 
     }, 
     new { 
      HttpMethod = new HttpMethodConstraint(HttpMethod.Get) 
     } 
); 

config.Routes.MapHttpRoute("PostRiskReports", "Members/{id}/Cpin/RiskReports" , 
     new { 
      controller = "Members", 
      action = "PostRiskReports" 
     }, 
     new { 
      HttpMethod = new HttpMethodConstraint(HttpMethod.Post) 
     } 
); 
関連する問題