2014-06-26 43 views
4

我通过nuget包管理器升级到4.0.1.0后开始体验这一点。然后我升级到4.1.0.0希望它可能是一个错误,但仍然是同样的问题。Windows Azure存储版本升级到> 4会导致“远程服务器返回错误:(400)错误请求”。

我正在使用基于云的azure存储,而不是模拟器。

我以前使用3.0.3.0,它工作,并仍然工作时,我切换到此版本。

这是整个方法(基本上复制从一个容器到另一个斑点)

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(); 

UPDATE: 的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

是否可以通过Fiddler追踪请求/响应?这应该会给你更多关于这个400错误的信息。 –

+0

@GauravMantri增加了Fiddler请求/响应,但没有多说。 –

回答

3

请更改下面的代码行:

var destContainer = cloudBlobClient.GetContainerReference(cloudBlobClient.BaseUri + _publishBlobContainer); 

var destContainer = cloudBlobClient.GetContainerReference(_publishBlobContainer); 

这应该解决问题。

+0

太棒了!谢谢!向后兼容性概念任何人(来自微软)? :-) –

2

在主要版本的Storage Client Library中没有向后兼容性。请注意,每个版本都与存储服务REST版本绑定,这可能会改变行为(这就是为什么我们同时版本服务和客户端库)。我们建议客户在升级到最新版本时重新测试其应用程序。

感谢, 让

0

要添加,以供将来参考,我们按照我们的SDK在semver.org记录语义版本方案。您可以使用它作为参考,以期发布新版本。

相关问题