所以我已经将一个文件上传到我的 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给出的是:
Checks existence of the blob.
在 DeleteIfExistsAsync
方法返回 false 后,因为显然 blob 不存在,我使用 DeleteAsync
并且这会从我的存储帐户中删除该文件,更重要的是不会抛出 404 错误,如果没有可删除的 blob 或访问权限不正确,通常会抛出该错误。
为什么 Blob.Exists
和 Blob.DeleteIfExists
总是返回 false?
最佳答案
这是我之前的 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
关于c# - Azure CloudBlockBlob.Exists() 方法始终返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28991003/