Odata と WebAPI を組み合わせて API を作成することを検討しています。私が検討していることの 1 つは、OData データ サービスを WebApi コントローラーと同じ URL にマッピングすることです。OData の機能とそのクエリ サポートを使用して、読み取り専用の情報を提供できます。次に、WebApi コントローラー メソッドを使用して更新を受け入れます。このようにして、システムに送信される更新をより細かく制御できます。これまでのところ、ルーティングでこれを実行しようとしました。
DataServiceHostFactory factory = new DataServiceHostFactory();
RouteTable.Routes.Add(new ServiceRoute("api/SDAApi", factory, typeof(ReadService)));
そのため、Odata データ サービスである ReadService にルートを追加しています。SDAApi は私のコントローラー名と一致します。私のコントローラーには、ReadService - SoftwareDownloadRequests から要求しているコレクションと一致する SoftwareDownloadRequestsPost メソッドがあります。
ブラウザで ~/Api/SDAApi/SoftwareDownloadRequests の URL を取得すると、予想されるアイテムのリストが表示されます。シンプルなフォーム投稿でURLに投稿すると、応答が返されます。「コンテンツ タイプ 'application/x-www-form-urlencoded' はサポートされていません。」このフォームの投稿は、別の URL で行ったときに機能したため、競合が原因であると想定しています。
私の質問に戻りますが、これは可能ですか?私のエラーを修正する方法についてのアイデアはありますか?
VS 2012 RC と .NET 4.5 を使用しています