我對WCF很陌生,所以如果我錯誤地陳述了某些事情,我很抱歉。使用WCF反序列化客戶端上的FileStream
這是使用.NET 4.0 RC1。
使用WCF,我試圖反序列化服務器的響應。基本響應將Stream作爲其唯一的MessageBodyMember。
public abstract class StreamedResponse
{
[MessageBodyMember]
public Stream Stream { get; set; }
public StreamedResponse()
{
this.Stream = Stream.Null;
}
}
這個類的派生版本實際上是什麼系列化,但他們沒有一個MessageBodyMember屬性(他們有其他的基本類型,如int,字符串等列爲的MessageHeader值)。
[MessageContract]
public class ChildResponse : StreamedResponse
{
[DataMember]
[MessageHeader]
public Guid ID { get; set; }
[DataMember]
[MessageHeader]
public string FileName { get; set; }
[DataMember]
[MessageHeader]
public long FileSize { get; set; }
public ChildResponse() : base()
{
}
}
流是總是一個FileStream,在我的特定情況下(但不總是)。
起初,WCF表示FileStream不是已知類型,所以我將它添加到已知類型的列表中,並且現在它序列化。乍一看,它也出現在客戶端反序列化它(它是FileStream類型)。
的問題是,它似乎並沒有被使用。所有的CanRead,CanWrite等都是錯誤的,而長度,位置等屬性在使用時會引發異常。與ReadByte()一樣。
我錯過了什麼讓我無法獲得有效的FileStream?