2011-09-22 12 views
16

WCFストリーミング経由でMemoryStreamを渡す予定ですが、動作していないようですが、コードを少し変更してFileStreamを渡すと動作しています。実際、私の目的は、ビジネスオブジェクトの大量のコレクションを渡すことです(シリアライズ可能)。私はbasicHttpBindingを使用しています。あなたの提案は非常に高く評価されるでしょう!WCFストリーミング経由でMemoryStreamを転送する方法

編集: 問題の症状は、受信ストリームが空であることです。エラーも例外もありません。

+0

そして、それは失敗だ場合、例外がスローされている必要があります。どこでそれを捕まえることができましたか?エラーメッセージは何ですか?メッセージはあなたに何が起こっているかの手がかりを与えますか? –

+0

お返事いただきありがとうございます。私は数日間絶望に追い込まれてきたので、この質問を気まぐれに投稿しました。 –

答えて

51

あなたは多くの詳細を提供していませんが、私はそれが何か起こっているのを見ているように、問題が何であるかを知っています。

MemoryStreamに何かを書き込んでWCFサービス操作の結果として返す場合は、ストリームを最初にリセットしてから返す必要があります。 WCFはそのストリームを現在の位置からのみ読み込みます。したがって、その位置がリセットされていない場合は空のストリームを返します。

これは、あなたが説明している問題を少なくとも説明します。お役に立てれば。

ここではいくつかのサンプルコード:

[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

ありがとうございました..あなたは文字通りその日を保存します.. –

関連する問題