我一直在试图让一个回答这个问题相当长的一段时间。 由于WCF DataService的不是线程安全的,而且往往需要重新创建,一旦我查询我的记录数据存储,我如何提取从响应的eTag所以当我重建我的DataContext我可以用它?
Answer 1:
这取决于你所使用的客户端和格式,您正在使用的电线(ATOM VS JSON)上的语言/库。 ETag的被存储在有效载荷和以单一实体的有效载荷也是在HTTP头的情况下。 一些库提取它为你,给你直接访问(例如ODataLib或WCF数据服务客户端)。 如果你自己解析有效载荷,你需要给自己解压。
在WCF数据服务客户端的ETag可以通过访问DataServiceContext.GetEntityDescriptor(entity).ETag
。
在ODataLib ETag的是通过暴露ODataEntry.ETag
。
在ATOM ETag的有效负载被存储为原子上的一个属性:条目元件称为m:etag
(m是元数据名字空间) 如这里所描述 :
在以详细JSON ETag的有效负载被存储为元数据条目的一部分。 所以在条目对象有一个属性__metadata其价值是有一个名为ETAG属性的对象。 参见4.1.1节
文章来源: How do I extract ETAG from a WCF Dataservices response?