1

很长一段时间以来,我一直在努力寻找这个问题的答案。由于 WCF 数据服务不是线程安全的,并且通常需要重新创建,一旦我查询我的数据存储以获取记录,如何从该响应中提取 ETAG,以便在我重建数据上下文时使用它?

4

1 回答 1

1

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

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

在 ODataLib 中,ETag 通过ODataEntry.ETag.

在 ATOM 的有效负载中,ETag 存储为 atom:entry 元素上的一个属性,称为m:etag(m 是元数据名称空间),如下所述

在 Verbose JSON 的有效负载中,ETag 存储为条目元数据的一部分。所以在入口对象中有一个属性__metadata,它的值是一个具有称为etag的属性的对象。见章节 4.1.1

于 2012-10-09T01:20:33.940 回答