我已经为我的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
是第一个。但是,该字段/属性甚至不应该用于反序列化!
任何帮助将不胜感激!
答案 0 :(得分:0)
添加
&LT;非序列化()&GT;
到基类的私有字段修复了我的问题!