2011-09-22 15 views
16

WCF Akışı aracılığıyla MemoryStream'i iletmeyi planlıyorum ama çalışmıyor gibi görünüyor, ancak FileStream yerine kodları biraz değiştirdiğimde, çalışıyor. Aslında amacım, geniş iş kolleksiyonları koleksiyonunu (seri hale getirilebilir) geçmek. BasicHttpBinding kullanıyorum. Öneriniz çok takdir edilecektir!WCF Aktarımı aracılığıyla MemoryStream nasıl aktarılır

Düzenlendi: Sorunun belirtileri, gelen akışın boş olmasıdır. Ne hata ne de istisna vardır.

+0

Ve başarısız eğer, bir özel durum atılmış gerekir: İşte bazı örnek kodlar

. Nerede yakalayabilirsin? Hata mesajı neydi? Mesaj, neler olduğuna dair herhangi bir ipucu veriyor mu? –

+0

Yanıtlarınız için çok teşekkürler. Birkaç gün boyunca beni çaresizliğe sürüklediğinden bu soruyu bir hevesle paylaştım. –

cevap

51

Pek çok ayrıntı veremiyorsunuz, ancak, neredeyse bir şey olduğunu gördüğüm kadarıyla sorunun ne olduğunu biliyorum.

Bir WCF hizmeti işleminin sonucu olarak bunu geri döndürmek için MemoryStream'a bir şeyler yazarsanız, döndürmeden önce akışı başlangıç ​​durumuna sıfırlamanız gerekir. WCF sadece geçerli pozisyonundan akışı izleyecektir, bu nedenle bu konum sıfırlanmamışsa boş bir akış döndürecektir.

En azından açıkladığınız sorunu açıklar. Bu yardımcı olur umarım.

[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

Çok teşekkürler .. Sen tam anlamıyla günü kurtarıyorsun .. –

İlgili konular