如何从WCF数据服务响应中提取TAG?

时间:2012-10-06 17:56:50

标签: wcf-data-services datacontext etag azure-table-storage wcf-data-services-client

我一直试图在很长一段时间内得到这个问题的答案。由于WCF数据服务不是线程安全的,并且通常需要重新创建,一旦我查询我的数据存储区以获取记录,如何从该响应中提取ETAG以便在重构我的datacontext时可以使用它?

1 个答案:

答案 0 :(得分:1)

这取决于您在客户端上使用的语言/库以及您在线路上使用的格式(ATOM与JSON)。 ETag存储在有效载荷中,并且在HTTP头中也存在单个实体有效载荷。 有些库会为您提取它并为您提供直接访问权限(例如ODataLib或WCF数据服务客户端)。如果您自己解析有效负载,则需要自己解压缩。

在WCF数据服务客户端中,可以通过DataServiceContext.GetEntityDescriptor(entity).ETag访问ETag。

在ODataLib中,ETag通过ODataEntry.ETag公开。

在ATOM中的有效负载中ETag作为属性存储在atom:entry元素上,名为m:etag(m是元数据命名空间)as described here

在Verbose JSON中的有效负载中,ETag存储为条目元数据的一部分。因此在入口对象中有一个属性__metadata,该值是一个具有名为etag的属性的对象。见chapter 4.1.1

相关问题