2014-02-05 152 views
0

我有一個ASP.NET Web API 2.0 OData服務項目,我試圖通過服務參考+ WCF數據服務(5.6)通過ASP.NET MVC項目 - 我這樣做的原因是,用戶瀏覽器可以訪問服務而無需擔心IE8和IE9的CORS,因此它們將擁有相同的主機。試圖將WCF數據服務用作另一個OData服務的中繼

一些修修補補後,這種設置主要是工作但也有一些問題,我的設置:

服務項目

1)的ASP.NET Web API 2.0的OData端點

2)WCF數據服務5.6使用WCF數據服務實體框架提供程序(1.0.0-alpha-2)的OData端點+實體框架6.0.2(EntityFrameworkDataService <DBContext>)

當我直接訪問無論是通過服務參考,LINQPad還是原始URL,他們都可以完美地執行這些服務。然後,我設置了ASP.NET MVC項目:

ASP.NET MVC項目(中繼上述服務引用):WCF數據服務5.6(DataService的<服務引用-1或2 >)

的問題來了當我嘗試對WCF服務的查詢作爲中繼相同:

中繼(1)$ inlinecount =所有頁給我:「在處理這個要求時發生錯誤。」

中繼(1 )和(2)與$ select = ...都給我:「未實現」。

當我通過反射提供程序傳遞虛擬POCO上下文時,所有操作都完美地在中繼WCF數據服務上工作,這導致我懷疑問題在於WCF數據服務和服務參考的組合,因爲他們都可以獨立工作,沒有任何問題......也許WCF數據服務正在檢查LINQ Provider以獲取服務引用,並隨意決定它不支持這些操作? 我可以活着沒有$ select但沒有$ inlinecount是一個交易斷路器。我可以採取一些替代解決方案,但我真的希望使這種方法有效:任何想法?

回答

0

這是非常相似:WCF Data Service - Proxy mid-tier service

一言以蔽之:您可以通過兩種

1繼電器)使服務相信它是在一個不同的URL比它(所以它實際上是除通過代理外的所有訪問都被破解)。

2)通過寫另一個服務,手工做中繼到服務引用...

我選擇沒有上述的重組和我的服務爲Web API Owin中間件。我失去了部署單獨服務的能力,但可以輕鬆地在另一箇中間件中交換,並且它使得CORS問題不存在。

相關問題