Dot-Net
GetBlobReferenceFromServer 不適用於相對 URI。錯誤:“只允許使用絕對地址”
我正在將 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錯誤堆棧:
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...我不明白為什麼 Uri 在必須工作時必須是絕對
CloudBlobClient的BaseUri。BaseUri在嘗試獲取參考之前,我 是否必須手動添加on?技術參考中對此沒有任何內容。
有沒有人可以使用相對 URI
GetBlobReferenceFromServer?我從根本上做錯了什麼嗎?
感謝您的回饋意見。GetBlobReferenceFromServer 需要絕對 URI,因為它是為特定場景設計的,在這種場景中,使用者只有一個指向 blob 的 URI,並且需要獲取其 blob 類型才能開始使用它。
如果您知道 blob 的類型,我強烈建議您使用 GetContainerReference,然後使用 GetBlockBlobReference 或 GetPageBlobReference,因為這些方法不必呼叫 Azure 儲存服務來獲取 blob 類型。因此,它們將降低成本並提高性能。它們還直接使用 blob 名稱,而不是 URI。