Azure CloudBlockBlob.Exists()方法始终返回false

时间:2015-03-11 15:38:31

标签: c# azure

所以我已将文件上传到我的Azure存储帐户,现在我正在尝试删除它,所以我有方法。

try
{
    var exists = Blob.Exists(); //Always False
    var t = Blob.DeleteIfExistsAsync(DeleteSnapshotsOption.IncludeSnapshots, null, null, new OperationContext());
    if (!t.Result) // t.Result is Always False
    {
         Blob.DeleteAsync(DeleteSnapshotsOption.IncludeSnapshots, null, null, new OperationContext());
    }
}
catch (Exception ex)
{
    //No 404 error thrown for DeleteAsync (Proves blob must exist)
}

但是我的Blob.Exists()方法总是返回false,即使我可以通过门户网站查看我的存储帐户中的blob。 Exist方法实际上做了什么? msdn给出的唯一信息是:

  

检查是否存在blob。

DeleteIfExistsAsync方法返回false之后因为显然blob不存在我使用DeleteAsync这会从我的存储帐户中删除该文件,更重要的是不会抛出404错误,这是如果没有要删除的blob或访问权限不正确,则通常抛出。

为什么Blob.ExistsBlob.DeleteIfExists总是返回false?

1 个答案:

答案 0 :(得分:3)

这是我SharedAccessSignature之前遇到的问题

var sas = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
          {
              Permissions = SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Delete,
              SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(Convert.ToDouble(ConfigurationManager.AppSettings["SharedAccessSignatureExpiryTimeOffset"]))
          });

但我需要将SharedAccessBlobPermissions.Read添加到SharedAccessSignature。使用额外的读取权限Exists()现在返回true