2

在 .NET 中使用SharpGs作为 Google 存储客户端,我尝试了这个,但它不起作用:

foreach (var o in bucket.Objects)
{
  o.Acl.CleanEntries();
  o.Acl.AddEntry(SharpGs.Acl.AclPermission.FULL_CONTROL, SharpGs.Acl.ScopeType.AllUsers);
  o.Acl.Save();
}
4

1 回答 1

2

当您在 foreach 中创建“o.Acl”时,您正在执行对服务器的查询(它位于“Acl”属性的 getter 内),因此在循环内的 3 行中的每一行中,您都从服务器获取 acl 并重置旧值。所以,你应该做这样的事情:

var acl = o.Acl;
acl.CleanEntries();
acl.AddEntry(SharpGs.Acl.AclPermission.FULL_CONTROL, SharpGs.Acl.ScopeType.AllUsers);
acl.Save();
于 2011-09-19T12:27:50.177 回答