我通过nuget包管理器升级到4.0.1.0后开始体验这一点。然后我升级到4.1.0.0希望它可能是一个bug,但仍然是同样的问题。
我使用的是基于云的azure存储,而不是模拟器。
我之前使用的是3.0.3.0并且它有效,但当我切换到此版本时仍然有效。
这是整个方法(基本上将blob从一个容器复制到另一个容器)
public string CopyBlobs(string blobPath)
{
var storageAccount = new CloudStorageAccount(new StorageCredentials(_storageAccountName, _storageAccountKey), true);
var cloudBlobClient = storageAccount.CreateCloudBlobClient();
var destContainer = cloudBlobClient.GetContainerReference(cloudBlobClient.BaseUri + _publishBlobContainer);
destContainer.CreateIfNotExists();
BlobContainerPermissions containerPermissions = new BlobContainerPermissions();
containerPermissions.PublicAccess = BlobContainerPublicAccessType.Blob;
destContainer.SetPermissions(containerPermissions);
var src = GetSasUrl(blobPath);
CloudBlockBlob srcBlob = new CloudBlockBlob(new Uri(src));
CloudBlockBlob destBlob;
destBlob = destContainer.GetBlockBlobReference(srcBlob.Name);
destBlob.StartCopyFromBlob(srcBlob);
return destBlob.StorageUri.PrimaryUri.ToString();
}
这就是抛出异常的地方:
destContainer.CreateIfNotExists();
更新: 当我调用上面的方法时,Fiddler会记录。
请求:
HEAD
https://accountname.blob.core.windows.net/https://accountname.blob.core.windows.net/published-clips?restype=container HTTP/1.1
User-Agent: WA-Storage/4.1.0 (.NET CLR 4.0.30319.34014; Win32NT 6.2.9200.0)
x-ms-version: 2014-02-14
x-ms-client-request-id: b60edc19-7d8f-4d6b-b264-0c98b9cb157d
x-ms-date: Thu, 26 Jun 2014 12:43:29 GMT
Authorization: SharedKey accountname:key
Host: accountname.blob.core.windows.net
Connection: Keep-Alive
响应:
HTTP/1.1 400 The requested URI does not represent any resource on the server.
Transfer-Encoding: chunked
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: 85015e32-fdcf-4398-af23-83ddf8a27c1b
Access-Control-Expose-Headers: x-ms-request-id
Access-Control-Allow-Origin: *
Date: Thu, 26 Jun 2014 12:43:31 GMT
答案 0 :(得分:3)
请更改以下代码行:
var destContainer = cloudBlobClient.GetContainerReference(cloudBlobClient.BaseUri + _publishBlobContainer);
到
var destContainer = cloudBlobClient.GetContainerReference(_publishBlobContainer);
这应该解决问题。
答案 1 :(得分:2)
Storage Client Library的主要版本之间没有向后兼容性。请注意,每个版本都与存储服务REST版本相关联,该版本可能会改变行为(这就是我们对服务和客户端库进行版本化的原因)。我们建议客户在升级到最新版本时重新测试他们的应用程序。
谢谢, 让
答案 2 :(得分:0)
要添加,为了将来参考,我们遵循semver.org中记录的sdk的语义版本控制方案。您可以将其用作对发布的较新版本的期望的参考。