当序列化一个类时NetDispatcherFaultException
本文关键字:一个 NetDispatcherFaultException 序列化 | 更新日期: 2023-09-27 18:09:36
我有这样的类:
public class Container
{
public IEventQueue GetEventQueue(){returns a DerivedEventQueue}
}
ComVisible(true), ComDefaultInterface(typeof(IEventQueue ))]
[ClassInterface(ClassInterfaceType.None)]
[Guid("XXX-XXX-XXX-XXX")]
[ProgId("XXXX")]
[DataContract]
[KnownType(typeof(DerivedEventQueue))]
public EventQueue: IEventQueue
{
public MyEvent GetEvent(){...}
}
[DataContract]
[KnownType(typeof(DerivedEventQueue))] //doesnt matter if I have this line or not, I got the same error
//[System.Serializable]
public class DerivedEventQueue: EventQueue, IEventSink
{
...
}
当我调用GetEventQueue时,我得到了以下异常:
System.ServiceModel.Dispatcher。NetDispatcherFaultException:格式化程序在试图反序列化消息时抛出异常:在试图反序列化参数XXXX时发生错误:GetEventQueueResult。InnerException消息是'Element 'XXXX:GetEventQueueResult'包含'XXX:DerivedEventQueue'数据契约的数据。反序列化器不知道映射到此契约的任何类型。将'DerivedEventQueue'对应的类型添加到已知类型列表中-例如,通过使用KnownTypeAttribute属性或将其添加到传递给DataContractSerializer的已知类型列表中。详情请参见InnerException。--> System.Runtime.Serialization.SerializationException:元素'XXXX:GetEventQueueResult'包含'XXXX:DerivedEventQueue'数据合约的数据。反序列化器不知道映射到此契约的任何类型。将'DerivedEventQueue'对应的类型添加到已知类型列表中—例如,通过使用KnownTypeAttribute属性或将其添加到传递给DataContractSerializer的已知类型列表中。
DerivedEventQueue在基类的KnownType属性中,所以我不知道为什么我得到这个异常。有人能告诉我为什么我得到这个例外吗?谢谢!
我想在服务级别添加已知类型的属性。
另外,我认为错误是来自你返回的接口,因为wcf不知道如何反序列化它。
。更多关于已知类型的详细信息,请参见http://msdn.microsoft.com/en-us/library/ms730167.aspx