2012-10-23 6 views
8

पर कॉल करता हूं, कुछ घंटों के लिए मैं Azure SDK का उपयोग करके बनाए गए ब्लॉब पर कुछ मेटाडेटा सेट करने का प्रयास कर रहा हूं। मैं डेटा को BeginUploadFromStream() का उपयोग करके असीमित रूप से अपलोड करता हूं और सबकुछ सुचारू रूप से काम करता है। जब अपलोड पूरा हो जाता है तो मैं अपने यूआरआई का उपयोग करके ब्लॉब तक पहुंच सकता हूं, इसलिए इसे सफलतापूर्वक बनाया गया है, हालांकि मेरे द्वारा सेट किया गया कोई भी मेटाडेटा जारी नहीं है।ब्लॉब मेटाडाटा सहेजा नहीं गया है, भले ही मैं क्लाउडब्लॉब .etMetadata

मैंनेEndUploadFromStream() पर कॉल करने के बाद मेटाडाटा सेट किया।

मैं मेटाडाटा तीन तरीके मैं documentation के माध्यम से प्राप्त कर सकते हैं स्थापित करने की कोशिश की है:

// First attempt 
myBlob.Metadata["foo"] = "bar"; 

// Second attempt 
myBlob.Metadata.Add("foo", "bar"); 

//Third attempt 
var metadata = new NameValueCollection(); 
metadata["foo"] = "bar"; 
blob.Metadata.Add(metadata); 

मेटाडाटा मैं फोन myBlob.SetMetadata() के रूप में प्रलेखन द्वारा निर्दिष्ट, Azure करने के लिए मेटाडाटा को बचाने के लिए स्थापित करने के बाद, लेकिन यह छड़ी नहीं है कॉल कोई अपवाद नहीं चलाता है, लेकिन जब मुझे अपने ब्लॉब का नया संदर्भ मिलता है, तो में कोई मेटाडेटा नहीं है।

मैंने मेटाडेटा को अतुल्यकालिक रूप से BeginSetMetadata() और EndSetMetadata() का उपयोग करने की कोशिश की है, लेकिन इसी तरह के परिणाम के साथ।

मुझे लगता है कि मुझे कुछ वास्तव में मामूली याद आ रही है, लेकिन पांच घंटों तक इसे देखने के बाद, मैं अभी भी समझ नहीं पा रहा हूं कि मैं कहां गलत हूं?

उत्तर

20

SetMetadata अपेक्षा के अनुसार काम करना चाहिए। लेकिन बस ब्लॉब का संदर्भ प्राप्त करना मेटाडेटा पढ़ने के लिए पर्याप्त नहीं है।

ब्लॉब संदर्भ प्राप्त करने के बाद, आपको उस क्लाउडब्लोब पर FetchAttributes विधि को कॉल करने की आवश्यकता है। यह सभी गुणों और मेटाडेटा को लोड करेगा, और तभी आप पहले सेट किए गए मेटाडेटा तक पहुंच पाएंगे:

// Get a reference to a blob. 
CloudBlob blob = blobClient.GetBlobReference("mycontainer/myblob.txt"); 

// Populate the blob's attributes. 
blob.FetchAttributes(); 

// Enumerate the blob's metadata. 
foreach (var metadataKey in blob.Metadata.Keys) 
{ 
    Console.WriteLine("Metadata name: " + metadataKey.ToString()); 
    Console.WriteLine("Metadata value: " + blob.Metadata.Get(metadataKey.ToString())); 
} 
+0

जैसा कि मुझे संदेह था, तो वास्तव में एक छोटी सी चीज! मुझे लगता है कि मैं इस विचार पर बहुत ध्यान केंद्रित कर रहा था कि लेखन समस्या थी - यह भी विचार नहीं किया कि समस्या गुणों को पढ़ सकती है। बहुत बहुत धन्यवाद, आपने मेरा गुच्छा बचा लिया! –

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