2014-05-23 4 views
5

ja uaktualniania Azure Storage od 1.7 SDK 2.3 SDK i zostały aktualizowania moje GetBlobReference(string) połączeń do GetBlockReferenceFromServer(Uri)GetBlobReferenceFromServer nie działa z względnymi identyfikatorami URI. Błąd: „Tylko adresy bezwzględne są dozwolone”

W przeszłości I zostały z wykorzystaniem względnej URI, ale kiedy mijam te aż do GetBlockReferenceFromServer pojawia się błąd, który mówi, że nie można używać bezwzględnych URI (zob stosu poniżej) kod

próbki:

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 

błąd stosu:

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... 

Nie rozumiem dlaczego Uri musi być absolutna, gdy CloudBlobClient ma BaseUri do pracy. Czy muszę próbować ręcznie dodawać BaseUri zanim spróbuję uzyskać referencję?

Brak informacji na temat tego w technical reference.

Czy ktoś ma względne identyfikatory URI do pracy z GetBlobReferenceFromServer? Czy jest coś, co zasadniczo robię źle?

+1

Nastąpiło wiele przełomowych zmian między wersją biblioteki pamięci masowej 1.7 i 2.0 (był to numer wersji, gdy została wydana). Wydaje się, że to był jeden z nich. Próbowałem wyszukać informacje o wersji 2.0 (https://github.com/Azure/azure-storage-net/blob/master/ changelog.txt), ale niestety zaczyna się ona dopiero od 2.0.1. Sądzę, że musisz po prostu założyć, że była to jedna z przełomowych zmian i musisz podać absolutny URI. –

Odpowiedz

10

Dziękujemy za opinię. GetBlobReferenceFromServer wymaga bezwzględnych identyfikatorów URI, ponieważ został zaprojektowany dla określonego scenariusza, w którym użytkownik ma po prostu identyfikator URI dla obiektu typu blob i musi uzyskać typ kropli, aby nawet zacząć z nim pracować.

Jeśli znasz typ obiektu blob, zdecydowanie zalecamy użycie GetContainerReference, a następnie GetBlockBlobReference lub GetPageBlobReference, ponieważ metody te nie muszą nawiązywać połączenia z usługą Azure Storage, aby uzyskać typ obiektu typu blob. W związku z tym obniżają koszty i zwiększają wydajność. Działają również bezpośrednio z nazwami obiektów blob, a nie z identyfikatorami URI.

Powiązane problemy