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