注意:仅当您的服务的最大协议版本为 3 或更高时,这些步骤才有效。OData 版本 3 引入了一种新的 JSON 格式,而 WCF 数据服务客户端仅支持这种 JSON 格式。(旧的 JSON 有效负载"__metadata"
在顶部有类似的东西"d":{...}
。在新的 JSON 格式中,你会看到类似的东西"odata.metadata"
,"odata.type"
等)
首先,确保您拥有 5.1 或更高版本的 WCF Data Sevrices 客户端库(Visual Studio 附带旧版本)以及使 Visual Studio 中的“添加服务引用”工作的工具的更新版本。
您可以在此处下载最新的工具安装程序:http: //www.microsoft.com/en-us/download/details.aspx?id=35840。
安装后,我建议通过在 NuGet 包管理器控制台中发出以下命令来升级到最新版本的 WCF 数据服务客户端:
Install-Package Microsoft.Data.Services.Client
升级到最新的客户端库后,您应该能够在客户端中毫无问题地使用 JSON。在 Visual Studio 中右键单击您的项目,选择“添加服务引用”并输入服务元数据文档的 URL。在 v5.1 及更高版本中,这将下拉服务的完整模型,这是支持 JSON 所必需的。
“添加服务参考”将自动生成DataServiceContext
. (您可以通过在 Visual Studio 的解决方案资源管理器中选择“显示所有文件”并展开服务引用背后的代码来查看此生成的代码。)例如,当我对 执行“添加服务引用”时http://services.odata.org/V3/OData/OData.svc/$metadata
,客户端库会生成一个类称为DemoService
。使用该派生类而不是DataServiceContext
直接使用,您只需调用.Format.UseJson()
. 例如:
var context = new DemoService(new Uri("http://services.odata.org/V3/OData/OData.svc");
context.Format.UseJson();