用于并发控制的Windows Azure ETag - 不正确的ETag格式?

时间:2012-10-24 16:20:24

标签: c# azure cloud

以下代码是为Windows Azure表存储服务编写的:

var context = GetTableServiceContext();
context.AttachTo(_tableName, entity, eTag);
context.UpdateObject(entity);
var response = context.SaveChangesWithRetries(saveChangesOptions);

如果eTag与表存储中的实体不匹配,我对此代码的目标是抛出http状态代码412(前提条件失败)。这将用于控制并发更新。我在执行SaveChangesWithRetries时遇到了一些奇怪的行为。根据传入的eTag参数的值,将发生以下情况:

eTag = W /“datetime'2010-08-17T23%3A43%3A26.1913755Z'” - >假设这个eTag不匹配,那么我将得到一个412.完美,这就是我想要的。

eTag = W /“WrongETag” - >我将收到状态代码为400的DataServiceRequestException。唯一的错误消息是“无效输入”

eTag =“wrongETag” - >与上述相同

似乎azure表服务需要比HTTP标准要求更严格格式的eTag。所有应该要求的是带引号的字符串,如果它是弱的,则带有可选的W /前缀。有人知道Azure表服务所需的特定格式吗?侧注:奇怪的是,将上述ETag与Azure的Blob服务一起使用就像预期的那样。

0 个答案:

没有答案
相关问题