【发布时间】:2011-11-17 11:02:54
【问题描述】:
由于
,我得到一个错误<ServiceKnownType(GetType(EmailMessageTemplate))> _
<ServiceKnownType(GetType(SmsMessageTemplate))> _
<OperationContract()> <WebMethod()> _
Public Function GetMessageTemplates(ByVal handlerId As Integer) As Collection(Of MessageTemplate)
Dim result = New Collection(Of MessageTemplate)
result = MessageDataAccess.GetMessageTemplates(handlerId)
Return result
End Function
我是wcf服务的网络方法(因为我使用:
<%@ServiceHost Language="VB" Service="MyAppITWS.Service1" %>
我将我的应用程序称为服务参考
结果是EmailMessageTemplates 和SmsMessageTemplates 的集合。这是我的 dtacontracts:
[DataContract]
public class EmailMessageTemplate : MessageTemplate
{
[DataMember]
public string EmailSubject { get; set; }
[DataMember]
public EmailFormat EmailFormat { get; set; }
}
[DataContract]
public class EmailMessageTemplate : MessageTemplate
{
[DataMember]
public string EmailSubject { get; set; }
[DataMember]
public EmailFormat EmailFormat { get; set; }
}
[DataContract]
public class SmsMessageTemplate : MessageTemplate
{
}
我该如何解决?
这是一个非常错误的错误:
{System.Runtime.Serialization.SerializationException:第 1 行位置 1535 中的错误。元素 'http://schemas.datacontract.org/2004/07/MyAppUtils.DataModel.Messaging:MessageTemplate' 包含的数据 'http://schemas.datacontract.org/2004/07/MyAppUtils.DataModel.Messaging:EmailMessageTemplate' 数据合同。反序列化器不知道映射的任何类型 到这个合同。添加 'EmailMessageTemplate' 对应的类型 到已知类型的列表 - 例如,通过使用 KnownTypeAttribute 属性或通过将其添加到已知列表中 传递给 DataContractSerializer 的类型。 w System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator 阅读器、字符串名称、字符串 ns、DataContract 和 dataContract) w System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle 声明TypeHandle, String 名称,字符串 ns) w ReadArrayOfMessageTemplateFromXml(XmlReaderDelegator,XmlObjectSerializerReadContext,XmlDictionaryString, XmlDictionaryString , CollectionDataContract ) w System.Runtime.Serialization.CollectionDataContract.ReadXmlValue(XmlReaderDelegator xmlReader、XmlObjectSerializerReadContext 上下文) w System.Runtime.Serialization.XmlObjectSerializerReadContext.ReadDataContractValue(DataContract dataContract,XmlReaderDelegator 阅读器) w System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator 阅读器、字符串名称、字符串 ns、DataContract 和 dataContract) w System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader,类型声明类型,DataContract dataContract,字符串名称, 字符串 ns) w System.Runtime.Serialization.DataContractSerializer.InternalReadObject(XmlReaderDelegator xmlReader,布尔验证对象名称) w System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator 读者,布尔验证对象名称) w System.Runtime.Serialization.DataContractSerializer.ReadObject(XmlDictionaryReader 读者,布尔验证对象名称) w System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameterPart(XmlDictionaryReader 阅读器,PartInfo 部分,布尔 isRequest)}
【问题讨论】:
标签: .net wcf serialization