无法让 JSONP 与 WCF 数据服务一起使用
Posted
技术标签:
【中文标题】无法让 JSONP 与 WCF 数据服务一起使用【英文标题】:Can't get the JSONP working with WCF Data Services 【发布时间】:2011-02-28 07:28:26 【问题描述】:从我阅读和观看的所有内容看来,从 WCF 数据服务公开 JSON 应该像将 JSONPSupportBehavior
属性添加到服务类一样简单。
问题是VS2010 无法识别JSONPSupportBehavior
属性。
有没有我遗漏的参考资料?似乎从所有文章中,它都得到了开箱即用的支持。
【问题讨论】:
我不认为它默认包含在内。有关示例代码,请参阅此link。 下载代码here。这个真的有效! 【参考方案1】:WCF 数据服务支持开箱即用的 JSON,无需添加属性或任何东西。
为了接收 JSON 格式的响应,客户端使用标准 HTTP 内容类型协商。
具体来说,他们需要在请求的accept
标头中包含application/json
。
OData protocol documentation的这一部分有例子。
这些示例显示了原始 HTTP 请求。不同的客户端 HTTP API 有不同的机制来指定请求头。
JSONPSupportBehavior
属性是一个扩展示例,它允许客户端在内容类型协商之外使用 URL 查询字符串选项(即 $format=json
),并且还添加了对“JSONP”的支持(即 @987654327 @)。
这些在您不控制标头的情况下很有用,例如通过脚本标签进行跨域访问时。
如果你想使用JSONPSupportBehavior
,你可以在这里获取:
http://code.msdn.microsoft.com/DataServicesJSONP
【讨论】:
是的,我去过您提供的链接,但错过了其中包含类文件的下载链接。谢谢【参考方案2】:较新版本的 WCF 数据服务默认支持 JSON,您必须拥有
Accept: application/json;odata=verbose
在请求头中。
Accept: application/json
已经不够用了。更多信息here。
【讨论】:
【参考方案3】:WCF 不仅支持开箱即用的 JSON,而且如果您使用 WCF WebApi(预览版 6),它还支持开箱即用的 JSONP。使用 NuGet 进入 VS 2010。安装后,请查看here 了解更多信息。
【讨论】:
以上是关于无法让 JSONP 与 WCF 数据服务一起使用的主要内容,如果未能解决你的问题,请参考以下文章