Я добавил сервисную ссылку на мой веб-сервис WCF, который сгенерировал все мои объекты datacontract.Я использую BasicHttpBinding.Используя частичный класс, я сделал один из этих объектов наследуемым от другого класса, который добавляет к нему некоторые свойства.Теперь при вызове службы выдается ошибка:
Метод теста CP.Exg2010.Tests.UnitTest1.TestWCF выбросил исключение: System.ServiceModel.Dispatcher.NetDispatcherFaultException: средство форматирования выдало исключение во времяпри попытке десериализации сообщения: произошла ошибка при попытке десериализации параметра http://tempuri.org/:RunResult. Сообщение InnerException было «Ошибка в строке 1, позиция 283.« Элемент »« CommandResult »из пространства имен« uri: //mycomp.corp/ »line / exg2010 'не ожидается.Ожидается элемент '_EngineTracingData'. '.Пожалуйста, смотрите InnerException для более подробной информации.---> System.Runtime.Serialization.SerializationException: ошибка в строке 1, позиция 283. «Элемент» «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
является первым.Но это поле / свойство даже не должно использоваться при десериализации!
Любая помощь будет оценена!