2012-07-13 51 views
0

我們正在考慮將Odata和WebAPI結合起來創建api。我正在看的一件事是將OData數據服務映射到與WebApi控制器相同的URL。我們可以使用OData的強大功能及其查詢支持來提供只讀信息。然後使用WebApi控制器方法接受更新。通過這種方式,我們可以更好地控制發送到系統中的任何更新。 到目前爲止,我試圖用路由來做到這一點。我可以在相同的URL設置WCF數據服務和WebAPI方法

DataServiceHostFactory factory = new DataServiceHostFactory(); 
RouteTable.Routes.Add(new ServiceRoute("api/SDAApi", factory, typeof(ReadService))); 

因此,我添加了一個路由到我的ReadService這是Odata數據服務。 SDAApi與我的控制器名稱相匹配。 在我的控制器上,我有一個方法SoftwareDownloadRequestsPost,它與我從ReadService - SoftwareDownloadRequests請求的集合相匹配。

當我在瀏覽器中獲取url〜/ Api/SDAApi/SoftwareDownloadRequests時,我得到了預期的項目列表。當我用簡單的表單發佈一個帖子時,我會得到一個回覆​​。 「不支持內容類型'application/x-www-form-urlencoded'。」 由於此表單發佈後,我有它在不同的網址,我假設它是由衝突造成的。

所以回到我的問題,這可能嗎?如果它是關於如何解決我的錯誤的任何想法?

我使用VS 2012 RC和.NET 4.5

回答

0

我想不出你會想這樣做一個很好的理由。

ASP.NET Web API公開了RC中OData的一些重要功能(例如$ filter)。顯然在未來的版本中會有更多的支持,儘管可能不在RTM中。

+0

我還沒有聽說他們有意提高WebApi中OData功能的級別,所以如果他們這樣做是個好消息。 – Noel 2012-07-16 16:19:56

+0

@Noel http://aspnetwebstack.codeplex.com/discussions/359229。順便說一句,你不會投票,下來或標記爲答案。這是不好的**。 – Aliostad 2012-07-16 16:31:17

+0

我錯過了5分鐘的編輯窗口,但我會繼續說 - 在這個時候這是一個窮人的實現,具有適度的功能和相當大的問題對我來說,這是在WebApi中,查詢不是按照OData中的方式推送到數據庫。也許這是一個可以解決的問題;我沒有真正看過它。 – Noel 2012-07-16 16:37:06

相關問題