将属性添加到WCF DataContract

时间:2011-10-06 15:45:53

标签: vb.net wcf serialization

我已经为我的WCF webservice添加了一个服务引用,它生成了我的所有datacontract对象。我正在使用BasicHttpBinding。使用部分类,我使其中一个对象继承自另一个为其添加一些属性的类。现在它在调用服务时抛出错误:

  

测试方法CP.Exg2010.Tests.UnitTest1.TestWCF抛出异常:   System.ServiceModel.Dispatcher.NetDispatcherFaultException:The   格式化程序在尝试反序列化消息时抛出异常:   尝试反序列化参数时出错   http://tempuri.org/:RunResult。 InnerException消息是'错误   在第1行位置283.'Element''CommandResult'来自命名空间   'uri://mycomp.corp/line/exg2010'不是预期的。期待元素   '_EngineTracingData'。'。有关更多详细信息,请参阅InnerException。   ---> System.Runtime.Serialization.SerializationException:错误   第1行位置283.'Element''CommandResult'来自命名空间   'uri://mycomp.corp/line/exg2010'不是预期的。期待元素   '_EngineTracingData'。

CommandResult是属于WSDL的属性。 _EngineTracingData是基类中属性使用的私有字段。

<XmlIgnore()> <SoapIgnore()> <Newtonsoft.Json.JsonIgnore()> _
Private _EngineTracingData As String = String.Empty
<XmlIgnore()> <SoapIgnore()> <Newtonsoft.Json.JsonIgnore()>
Public Property EngineTracingData As String Implements Interfaces.ICPMasterBaseInfo.EngineTracingData
    Get
        Return Me._EngineTracingData
    End Get
    Set(ByVal value As String)
        Me._EngineTracingData = value
    End Set
End Property

我读了一些关于按字母顺序发生的反序列化的内容,这可以解释为什么_EngineTracingData是第一个。但是,该字段/属性甚至不应该用于反序列化!

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

啊,我找到了它!

添加

&LT;非序列化()&GT;

到基类的私有字段修复了我的问题!