2016-09-05 27 views
0

我想使用BreezeJS與現有的OData服務器,這是使用.NET System.Services.Data.DataService實現的,版本4.0。看起來,BreezeJS正在執行http OPTIONS請求以獲取$元數據,但服務器會引發NotImplemented異常。 當我在瀏覽器中使用http GET手動請求$ metadata時,我得到(XML格式)元數據很好。

有沒有一種方法來配置Breeze使用http GET或我需要以某種方式調整服務器以支持http OPTIONS?

任何幫助,將不勝感激。

回答

0

OPTIONS請求是CORS的一部分,如this answer中所述。您需要配置服務器以支持CORS,或者不要使用來自瀏覽器的跨源請求。

有關使用WCF和CORS,請參閱this answerthis answer。似乎建議切換到Web API。

+0

這似乎是正確的,但讓我困惑。 Breeze聲稱用不同的適配器支持OData V1/V2(「odata」),V3(「webApiOData」)以及V4(「webApiOdata4」,初步,但文檔可能已過時)。這些鏈接似乎表明Breeze由於缺乏CORS支持而無法使用V1/V2(WCF DataServices),只能通過轉向Web API才能實現。不過,這可能是服務器端datajs和/或Odata的限制。 – user1211286

+0

對CORS的支持需要在服務器端提供。你的應用程序需要CORS支持嗎? –

+0

在這件事出現之前,我甚至都沒有意識到CORS。該服務器是一個現有的軟件,作爲Windows服務運行並在給定端口上提供odata。現在的角度/微風客戶端正在開發和使用lite服務器進行測試驅動,顯然是在不同的端口上,但在同一臺機器上。任何提示是否更改設置都會以某種方式解決問題? – user1211286