2010-06-06 62 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