2010-06-06 48 views
8

從我看來,從WCF數據服務公開JSON應該就像將JSONPSupportBehavior屬性添加到服務類一樣簡單。無法讓JSONP與WCF數據服務一起工作

問題是,VS2010不能識別JSONPSupportBehavior屬性。

有沒有我缺少的參考?從所有文章看來,它是開箱即用的支持。

+0

下載代碼[here](http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=DataServicesJSONP&DownloadId=11208)。這一個實際上工作! – 2011-05-17 10:36:51

+0

我不認爲它是默認包含的。有關示例代碼,請參見此[鏈接](http://code.google.com/p/dotnet-visualization-datasource/source/browse/trunk/Web+Services/WCFDataService/JSONPSupportBehavior.cs?spec=svn84&r=84) 。 – mdm20 2010-06-08 19:52:32

回答

9

WCF數據服務支持JSON開箱即用,無需添加屬性或任何東西。

爲了以JSON格式接收響應,客戶端使用標準的HTTP內容類型協商。

具體而言,他們需要在請求的accept標頭中包含application/json

在本節中有OData protocol documentation的例子。

這些示例顯示原始HTTP請求。不同的客戶端HTTP API具有不同的機制來指定請求標頭。

JSONPSupportBehavior屬性是除了內容類型協商的擴展,它允許客戶使用URL的查詢字符串選項(即$format=json)的示例,並且還增加了對「JSONP」(即$callback=[function-name])的支持。

這些在您不控制標題的情況下非常有用,例如在通過腳本標記進行跨域訪問時。

如果你想使用JSONPSupportBehavior你可以在這裏獲得它:

http://code.msdn.microsoft.com/DataServicesJSONP

+0

YE,我去過你提供的鏈接,但錯過了其中有類文件的下載鏈接。謝謝 – SevilNatas 2010-06-13 10:40:08

0

WCF不僅suppors JSON出的現成的,但它也支持JSONP外的the-如果你使用WCF WebApi(預覽6)。使用NuGet進入VS 2010。安裝後,請查看here瞭解更多信息。默認情況下

2

較新版本的WCF數據服務支持JSON的,你必須有

Accept: application/json;odata=verbose 
在請求頭

Accept: application/json 

已經不夠用了。更多信息here