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

标签 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给出的是:

Checks existence of the blob.

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

为什么 Blob.ExistsBlob.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/

相关文章:

c# - 在 Roslyn 的 .net core 中动态选择引用

C# - 如何检查 zip 文件是否已拆分?

c# - Web API 删除方法不起作用

c# - 如何处理连接问题?

c# - 更改 System.Media.SoundPlayer 中的音量

c# - NU1202 : Package is not compatible with netcoreapp2. 0 (.NETCoreApp,Version=v3.0)

azure - 什么是 Azure Active Directory token 请求速率限制?

Azure 数据工厂 - 翻滚窗口触发器 - 限制其运行时间

azure - 如何使用事件网格将 AZ Blob 存储与 App webhook 连接?

azure - 为 Azure Active Directory 打开所需的端口