2011-09-22 16 views
16

के माध्यम से MemoryStream हस्तांतरण करने के लिए मैं कैसे WCF स्ट्रीमिंग के माध्यम से MemoryStream पारित करने के लिए योजना बना रहा हूँ लेकिन यह काम नहीं लगता है लेकिन जब मैं थोड़ा बजाय FileStream पारित करने के लिए कोड बदलने के लिए, यह काम कर रहा है। वास्तव में, मेरा उद्देश्य व्यापार वस्तुओं (serializable) के बड़े संग्रह को पारित करना है। मैं basicHttp बाइंडिंग का उपयोग कर रहा हूँ। आपके सुझाव की बहुत सराहना की जाएगी!WCF स्ट्रीमिंग

संपादित: समस्या के लक्षण यह है कि आने वाली धारा खाली है। न तो त्रुटि और न ही अपवाद है।

+0

और अगर वह असफल रहा है, एक अपवाद फेंका गया होगा। आप इसे पकड़ने में सक्षम कहां? त्रुटि संदेश क्या था? क्या संदेश आपको क्या हो रहा है इसके बारे में कोई संकेत देता है? –

+0

आपके उत्तरों के लिए बहुत बहुत धन्यवाद। मैंने इस सवाल को एक सनकी पर पोस्ट किया क्योंकि यह मुझे कुछ दिनों के लिए निराशा के लिए चला रहा है। –

उत्तर

51

आप कई विवरण नहीं दे रहे हैं, हालांकि, मुझे लगभग निश्चित है कि मुझे पता है कि समस्या क्या है जैसा मैंने देखा है कि बहुत कुछ हो रहा है।

यदि आप डब्ल्यूसीएफ सेवा संचालन के परिणामस्वरूप इसे वापस करने के लिए MemoryStream पर कुछ लिखते हैं, तो आपको इसे वापस करने से पहले स्ट्रीम को मैन्युअल रूप से रीसेट करना होगा। डब्ल्यूसीएफ केवल वर्तमान स्थिति से स्ट्रीम पढ़ेगा, इसलिए यदि उस स्थिति को रीसेट नहीं किया गया है तो एक खाली स्ट्रीम वापस कर दी जाएगी।

इससे कम से कम उस समस्या की व्याख्या होगी जो आप वर्णन कर रहे हैं। उम्मीद है की यह मदद करेगा।

यहां कुछ नमूना कोड:

[OperationContract] 
    public Stream GetSomeData() 
    { 
     var stream = new MemoryStream(); 
     using(var file = File.OpenRead("path")) 
     { 
      // write something to the stream: 
      file.CopyTo(stream);   
      // here, the MemoryStream is positioned at its end 
     } 
     // This is the crucial part: 
     stream.Position = 0L; 
     return stream; 
    } 
+4

बहुत बहुत धन्यवाद .. आप सचमुच दिन बचाते हैं .. –