2014-05-23 6 views
5

मैं 1.7 एसडीके से 2.3 एसडीके के लिए Azure संग्रहण का नवीनीकरण कर रहा हूँ और GetBlockReferenceFromServer(Uri)GetBlobReferenceFromServer सापेक्ष यूआरआई के साथ काम नहीं कर रहा है। त्रुटि: "केवल पूर्ण पते अनुमत हैं"

करने के लिए अपने GetBlobReference(string) कॉल को अद्यतन करने की है अतीत मैं रिश्तेदार यूआरआई का उपयोग किया गया है, लेकिन जब मैं इन पारित

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 

त्रुटि ढेर: के माध्यम से GetBlockReferenceFromServer को मैं एक त्रुटि है कि कहते हैं मैं निरपेक्ष यूआरआई उपयोग नहीं कर सकते प्राप्त

नमूना कोड (नीचे ढेर देखें):

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 से काम करने के लिए है पूर्ण हो गया है है। संदर्भ प्राप्त करने का प्रयास करने से पहले मुझे BaseUri मैन्युअल रूप से प्रीपेड करना होगा?

इस बारे में technical reference में कुछ भी नहीं है।

क्या किसी को GetBlobReferenceFromServer के साथ काम करने के लिए सापेक्ष यूआरआई मिला है? क्या ऐसा कुछ है जो मैं मूल रूप से गलत कर रहा हूं?

+1

स्टोरेज क्लाइंट लाइब्रेरी संस्करण 1.7 और 2.0 के बीच कई तोड़ने वाले बदलाव हुए हैं (यह रिलीज़ होने पर संस्करण संख्या थी)। ऐसा लगता है कि यह उनमें से एक था। मैंने 2.0 संस्करण (https://github.com/Azure/azure-storage-net/blob/master/changelog.txt) के लिए रिलीज नोट्स देखने की कोशिश की लेकिन दुर्भाग्य से यह केवल 2.0.1 से शुरू होता है। मुझे लगता है कि आपको सिर्फ यह मानना ​​है कि यह एक तोड़ने वाला परिवर्तन था और आपको पूर्ण यूआरआई प्रदान करने की आवश्यकता होगी। –

उत्तर

10

आपकी प्रतिक्रिया के लिए धन्यवाद। GetBlobReferenceFromServer को पूर्ण यूआरआई की आवश्यकता होती है, क्योंकि यह एक विशिष्ट परिदृश्य के लिए डिज़ाइन किया गया था, जहां उपयोगकर्ता के पास ब्लॉब के लिए यूआरआई है और इसके ब्लॉब प्रकार को इसके साथ काम करना शुरू करने की आवश्यकता है।

यदि आप अपने ब्लॉब के प्रकार को जानते हैं, तो मैं दृढ़ता से GetContainerReference और फिर GetBlockBlobReference या GetPageBlobReference का उपयोग करने की अनुशंसा करता हूं, क्योंकि इन विधियों को ब्लॉब प्रकार प्राप्त करने के लिए Azure संग्रहण सेवा पर कॉल करने की आवश्यकता नहीं है। इसलिए, वे लागत को कम करेंगे और प्रदर्शन में वृद्धि करेंगे। वे यूआरआई नहीं, ब्लॉब नामों के साथ सीधे काम करते हैं।

संबंधित मुद्दे