所以我已将文件上传到我的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.Exists
和Blob.DeleteIfExists
总是返回false?
答案 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