我要去邊界線瘋了,我一直在使用這超過了一天,仍然不知道爲什麼它不工作,WCF消息協定和流
我有一個MessageContract我是預計不會 :採用送出去一個流,但我得到以下錯誤,
類型「System.IO.FileStream」與數據 合同名稱 「http://schemas.datacontract.org/2004/07/System.IO的FileStream」。將已知靜態的 類型添加到已知的 類型的列表中 - 例如,使用 KnownTypeAttribute屬性或 將它們添加到傳遞給DataContractSerializer的已知類型列表 。
[ServiceContract()]
public interface IContentService
{
[OperationContract(), FaultContract(typeof(ContentFault))]
PublishItemResponse PublishFile(PublishFileRequest request);
}
[MessageContract()]
public class PublishFileRequest
{
[MessageHeader()]
public FileInventoryItem Item {get;set;}
[MessageHeader()]
public Request Request {get;set;}
[MessageBodyMember()]
public Stream FileContent {get;set;}
}
[MessageContract()]
public class Request
{
[MessageHeader()]
public Guid AuthorizationToken { get; set; }
[MessageHeader()]
public string CoreVersion { get; set; }
[MessageHeader()]
public string Password { get; set; }
[MessageHeader()]
public DateTime RequestTime { get; set; }
[MessageHeader()]
public string ComponentVersion { get; set; }
[MessageHeader()]
public string UserName { get; set; }
}
[MessageContract()]
[Serializable()]
public class FileInventoryItem : InventoryItemBase
{
public Stream FileContent { get; set;}
}
[MessageContract()]
[KnownType(typeof(FileInventoryItem))]
[KnownType(typeof(FolderInventoryItem))]
[Serializable()]
public abstract class InventoryItemBase
{
public List<string> Errors {get;set;}
public List<string> Warnings {get;set;}
[MessageHeader()]
public StagingAction Action {get;set;}
[MessageHeader()]
public string ContentXml {get;set;}
[MessageHeader()]
public int ItemId {get;set;}
[MessageHeader()]
public ItemType ItemType { {get;set;}
[MessageHeader()]
public string Name {get;set;}
[MessageHeader()]
public int ParentId {get;set;}
[MessageHeader()]
public Guid ParentUniqueId {get;set;}
[MessageHeader()]
public Guid UniqueId {get;set;}
[MessageHeader()]
public Guid Version {get;set;}
}
任何幫助是極大挪用,
錯誤提到'System.IO.FileStream'。 ServiceContract中沒有FileStream。爲什麼? – 2010-07-09 00:01:32
[MessageBodyMember()] public Stream FileContent {get; set;} 正在傳入的是從Stream繼承的File-stream。 – 2010-07-09 00:08:09
*從Stream繼承*。那就是問題所在。你是否試圖發送一個純粹的流,看看它是否有效? – 2010-07-09 00:18:25