2013-01-12 54 views
1

使用来自CloudBlockBlob类中的方法DeleteIfExists,当我得到一个异常时,得到的异常。C#与Azure存储使用DeleteIfExists()

这是我的代码:

CloudBlobClient blobClient = this._storageAccount.CreateCloudBlobClient(); 

      directory = directory.ToLower(); 

      string containerDirectory = this.GetContainer(directory); 
      string relativePathWithoutContainer = this.GetRelativePathWithoutContainer(directory); 

      CloudBlobContainer container = blobClient.GetContainerReference(containerDirectory); 
      container.CreateIfNotExist(); 
      container.SetPermissions(new BlobContainerPermissions() { PublicAccess = BlobContainerPublicAccessType.Blob }); 

      foreach (HttpPostedFileBase file in files) 
      { 
       CloudBlockBlob blob = container.GetBlockBlobReference(string.Format("{0}/{1}", relativePathWithoutContainer, file.FileName.ToLower())); 
       blob.DeleteIfExists(); 
       blob.UploadFromStream(file.InputStream,new BlobRequestOptions()); 
      } 

      return true; 

我得到的异常在该行:

blob.DeleteIfExists(); 

异常的细节是:

服务器无法进行身份验证请求。确保 授权标头的值正确地形成,包括签名。

回答

2

得到了here尝试一个例子来添加这些,看看它是否工作

//删除BLOB如果它已经存在,也删除任何快照。

BlobRequestOptions options = new BlobRequestOptions(); 

options.DeleteSnapshotsOption = DeleteSnapshotsOption.IncludeSnapshots; 

blob.DeleteIfExists(options);