【发布时间】:2009-10-09 17:14:13
【问题描述】:
我有一个自定义 DTO 列表,我正在尝试将其传递给 WCF 服务。
我收到以下错误:
尝试序列化参数 tcp://localhost/:oObject 时出错。 InnerException 消息是 'Type 'System.Collections.Generic.List`1[[TEGE.ER.WorkFlowEngine.WFCommon.HeartBeat.HeartBeatDTO, WFCommon, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' with data合同名称“ArrayOfHeartBeatDTO:TEGE.ER.WorkFlowEngine.WFCommon.HeartBeat”不是预期的。将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给 DataContractSerializer 的已知类型列表中。有关详细信息,请参阅 InnerException。
我设置了 DTO DataContract 和 DataMember。我做了一个自动 WCF 服务参考,并确保执行高级选项以将集合更改为通用列表而不是数组。
我错过了什么?浏览过很多做类似事情的网站,但无法让我的网站克服这个错误。有什么想法吗?
发件人代码:
<DataContract(Name:="HeartBeatDTO", Namespace:="TEGE.ER.WorkFlowEngine.WFCommon.HeartBeat")> _
Public Class HeartBeatDTO
Public Sub IssuePatientReport()
SBClient.SendCommunication(_PatientID, _HeartBeats)
End Sub
接收方代码:
Public Sub SendCommunication(ByVal sKey As String, ByVal oObject As Object) Implements iOperatorCommunication.SendCommunication
If _CurrentCommunicationLog.ContainsKey(sKey) Then
_CurrentCommunicationLog.Item(sKey) = oObject
Else
_CurrentCommunicationLog.Add(sKey, oObject)
End If
End Sub
我的界面:
<ServiceContract(Namespace:="tcp://localhost/")> _
<ServiceKnownType(GetType(List(Of HeartBeatDTO)))> _
Public Interface iOperatorCommunication
<OperationContract()> _
Function ReceiveCommunication(ByVal sKey As String) As Object
<OperationContract()> _
Function ReturnCommunicationLevel() As Integer
<OperationContract()> _
Function ReturnCommunications() As Dictionary(Of String, Object)
<OperationContract()> _
Function ReturnCommunicationsByKeySearch(ByVal sSearch As String) As Dictionary(Of String, Object)
<OperationContract()> _
Sub SendCommunication(ByVal sKey As String, ByVal oObject As Object)
End Interface
更新: 这是新的错误消息:
尝试执行时出错 序列化参数 tcp://localhost/:oObject。这 InnerException 消息为“类型” 'TEGE.ER.WorkFlowEngine.WFCommon.HeartBeat.HeartBeatDTOList' 带有数据合同名称 'HeartBeatDTOList:TEGE.ER.WorkFlowEngine.WFCommon.HeartBeat' 预计不会。添加任何类型不 静态已知到已知列表 类型 - 例如,通过使用 KnownTypeAttribute 属性或由 将它们添加到已知类型列表中 传递给 DataContractSerializer。'。 请参阅 InnerException 了解更多信息 详情。
【问题讨论】:
标签: wcf serialization generic-list