我正在将Azure Storage从1.7 SDK升级到2.3 SDK,并且一直在更新我的GetBlobReference(string)
调用为GetBlockReferenceFromServer(Uri)
过去我一直在使用相对URI,但是当我将这些传递到GetBlockReferenceFromServer
时,我会收到一个错误,提示我不能使用绝对URI(请参见下面的堆栈)
示例代码:
Dim myAccount As CloudStorageAccount = CloudStorageAccount.Parse(connectionString)
Dim myClient As CloudBlobClient = myAccount.CreateCloudBlobClient()
Dim myRelativeUri As New Uri("mycontainer/myblob.txt", UriKind.Relative)
Dim myBlobref As ICloudBlob = myClient.GetBlobReferenceFromServer(myRelativeUri) <- Errors on this line
错误堆栈:
System.ArgumentException: Address 'mycontainer/myblob.txt' is a relative address. Only absolute addresses are permitted.Parameter name: uri
at Microsoft.WindowsAzure.Storage.StorageUri.AssertAbsoluteUri(Uri uri)
at Microsoft.WindowsAzure.Storage.StorageUri.set_PrimaryUri(Uri value)
at Microsoft.WindowsAzure.Storage.StorageUri..ctor(Uri primaryUri, Uri secondaryUri)
at Microsoft.WindowsAzure.Storage.StorageUri..ctor(Uri primaryUri)
at Microsoft.WindowsAzure.Storage.Blob.CloudBlobClient.GetBlobReferenceFromServer(Uri blobUri, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) at MySoftware.MyReference...
我不明白为什么在
CloudBlobClient
有一个 BaseUri
的情况下,Uri 必须是绝对的。在尝试获取引用之前,我是否需要手动添加 BaseUri
?在技术参考文档中没有关于这方面的内容。
是否有人成功使用相对 URI 并使用
GetBlobReferenceFromServer
?我是否基本上做错了些什么?