ale*_*rgy 7 .net vb.net azure azure-storage azure-storage-blobs
我正在将Azure存储从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
Run Code Online (Sandbox Code Playgroud)
错误堆栈:
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...
Run Code Online (Sandbox Code Playgroud)
我不明白为什么当CloudBlobClient有一个BaseUri工作时,Uri必须是绝对的.BaseUri在尝试获取参考之前,是否必须先手动添加?
关于此,技术参考中没有任何内容.
有没有人有相关的URI可以使用GetBlobReferenceFromServer?有什么东西我从根本上做错了吗?
Ser*_*ler 11
感谢您的反馈意见.GetBlobReferenceFromServer需要绝对URI,因为它是为特定场景设计的,其中用户只有blob的URI并且需要获取其blob类型甚至开始使用它.
如果您知道blob的类型,我强烈建议使用GetContainerReference,然后使用GetBlockBlobReference或GetPageBlobReference,因为这些方法不必调用Azure存储服务来获取blob类型.因此,它们可以降低成本并提高性能.它们也直接与blob名称一起工作,而不是URI.
| 归档时间: |
|
| 查看次数: |
2174 次 |
| 最近记录: |