【问题标题】:Issues with WCF Relay Service Data ObjectsWCF 中继服务数据对象的问题
【发布时间】:2015-09-16 15:16:02
【问题描述】:

我正在编写一个位于客户端和目标之间的中间人 WCF SOAP 服务。目标端点被拆分为具有相同操作签名的两个服务,中继服务的工作是识别客户端数据需要发送到其中的哪一个,然后发送。

因此,鉴于此,我正在尝试在我的 relay wcf 服务中重用 target 接口,以便 client 可以连接到我的继电器没有变化。在测试中,尝试调用对目标的调用时出现以下错误:

尝试序列化参数时出错 流程文档。内部异常消息 是带有数据合同名称的“输入文档”类型 'InputDoc:http://schemas.datacontract.org/2004/07/RelayService' 是 没想到。考虑使用 DataContractResolver 或添加任何类型 在已知类型列表中静态未知 - 例如,通过 使用 KnownTypeAttribute 属性或将它们添加到列表中 传递给 DataContractSerializer 的已知类型。请参见 InnerException 了解更多详情。

我怀疑问题在于我编写了一个糟糕的界面。我的接口包含 InputDoc 类的数据协定,它继承自目标服务的 InputDoc 类。有人可以解释一下我如何能够成功地将这个对象传递给目标服务吗?

我的界面:

<ServiceContract()>
Public Interface IRelayService

    <OperationContract()>
    Function processDoc(ByVal inputDoc As InputDoc) As ResultResposne
End Interface


<DataContract(), _
 System.Xml.Serialization.XmlTypeAttribute([TypeName]:="InputDocument", [Namespace]:="http://test.net/")>
Partial Public Class InputDoc
    Inherits TargetService.InputDoc
End Class

【问题讨论】:

    标签: .net vb.net web-services wcf soap


    【解决方案1】:

    使用来自:"Type not expected", using DataContractSerializer - but it's just a simple class, no funny stuff?的信息

    您是否尝试过使用 [KnownType(typeof(InputDoc)] 装饰包含您的 InputDoc 类的类?

    我会阅读上面提到的 SO 问题,希望这对您的项目结构有意义。我不熟悉你的项目结构,所以我很难告诉你应该把 [KnownTYpe(typeof())] 放在哪里的确切细节。

    【讨论】:

    • 据我所知,没有包含 InputDoc 的类。 InputDoc继承自Target.InputDOc,由processDoc调用,它本身不包含在任何其他类中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    相关资源
    最近更新 更多