複雑なオブジェクトの一部であるストリームを、Wcfメソッドから返されたデータとして返すことは可能ですか?
Wcfを使用してストリームデータを取得する際のmsdn参照のほとんどを確認しました。このような。すべての例は、メソッドの戻りタイプがStreamの場合(またはパラメーターがstreamの場合)にストリームを返す方法を示しているようです。
私が知りたかったのは、データが複雑なオブジェクトプロパティの一部である場合、ストリームを返すことができるかどうかです。たとえば、GetData()は、次のようにストリームを含むデータを返すことができます。
[DataContract]
public class Data
{
[DataMember]
public string Info { get; set; }
/// <summary>
/// This is the file stream that would be returned to client.
/// </summary>
[DataMember]
public Stream File { get; set; }
}
[ServiceContract()]
public interface IService
{
[OperationContract]
Data GetData();
}
私の最初のテストから、これは機能しないようです。クライアント側で例外が発生します(予期しないソケットの閉鎖)。結果は、DataContractSerializationまたはXmlSerializationに関係なく同じです。必要なストリーミングモードをで設定しましたTransferMode.Streamed
。