2015-05-11 1 views
-2

При попытке вызвать веб-службу для HP Operations Orchestration я получаю сообщение об ошибке ниже. Похоже, WSDL неправильно форматирует ответ, или я неправильно обрабатываю ответ. Большинство вещей, которые я видел в Интернете, относятся к тому, что размер сообщения слишком мал. Это, похоже, не так. Я изменил просто использование var, и это не помогает. Есть идеи?Ошибка веб-службы «Ошибка в десериализации тела сообщения ответа для работы»

Зов: var h = OOSRClient.getFlowRunHistoryByRunId(1);

Исключение:

System.ServiceModel.CommunicationException was caught 
    HResult=-2146233087 
    Message=Error in deserializing body of reply message for operation 'getFlowRunHistoryByRunId'. 
    Source=mscorlib 
    StackTrace: 
    Server stack trace: 
     at System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, XmlSerializer serializer, MessagePartDescription returnPart, MessagePartDescriptionCollection bodyParts, Object[] parameters, Boolean isRequest) 
     at System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, String action, MessageDescription messageDescription, Object[] parameters, Boolean isRequest) 
     at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest) 
     at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeReply(Message message, Object[] parameters) 
     at System.ServiceModel.Dispatcher.ProxyOperationRuntime.AfterReply(ProxyRpc& rpc) 
     at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc) 
     at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 
     at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 
     at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 
    Exception rethrown at [0]: 
     at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 
     at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 
     at TestOO.OOSR.WSCentralService.getFlowRunHistoryByRunId(getFlowRunHistoryByRunIdRequest request) 
     at TestOO.OOSR.WSCentralServiceClient.TestOO.OOSR.WSCentralService.getFlowRunHistoryByRunId(getFlowRunHistoryByRunIdRequest request) in c:\Users\slippi3\Documents\Visual Studio 2013\Projects\TestOO\TestOO\Service References\OOSR\Reference.cs:line 7526 
     at TestOO.OOSR.WSCentralServiceClient.getFlowRunHistoryByRunId(Int64 runId) in c:\Users\slippi3\Documents\Visual Studio 2013\Projects\TestOO\TestOO\Service References\OOSR\Reference.cs:line 7532 
     at TestOO.Controllers.HomeController.Index() in c:\Users\slippi3\Documents\Visual Studio 2013\Projects\TestOO\TestOO\Controllers\HomeController.cs:line 118 
    InnerException: System.InvalidOperationException 
     HResult=-2146233079 
     Message=There is an error in XML document (1, 1287). 
     Source=System.Xml 
     StackTrace: 
      at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events) 
      at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle) 
      at System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, XmlSerializer serializer, MessagePartDescription returnPart, MessagePartDescriptionCollection bodyParts, Object[] parameters, Boolean isRequest) 
     InnerException: System.InvalidCastException 
      HResult=-2147467262 
      Message=Cannot assign object of type System.Object[] to an object of type TestOO.OOSR.WSRunHistoryDetailsExtend[]. 
      Source=ma3ir41a 
      StackTrace: 
       at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderWSCentralService.Read90_Item() 
       at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer45.Deserialize(XmlSerializationReader reader) 
       at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events) 
      InnerException: 

Вот ответ:

<?xml version="1.0" encoding="utf-8"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<soapenv:Body> 
    <ns1:getFlowRunHistoryByRunIdResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://wscentralservice.services.dharma.iconclude.com"> 

<getFlowRunHistoryByRunIdReturn soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> 
<getFlowRunHistoryByRunIdReturn xsi:type="ns2:WSRunHistoryDetailsExtend" xmlns:ns2="http://iconclude.com/webservices/rss/v2.0/soap"> 
<uuid xsi:type="xsd:string">1111ac59-6bbe-47fa-841f-94e56c1b2111</uuid> 
<flowRevision xsi:type="xsd:string">4</flowRevision> 
<runHistoryId xsi:type="xsd:long">1</runHistoryId> 
<runName xsi:type="xsd:string"></runName> 
<userId xsi:type="xsd:string">AA\AAAAAAA</userId> 
<status xsi:type="xsd:string">Resolved</status> 
<startTime xsi:type="xsd:long">1302621361380</startTime> 
<duration xsi:type="xsd:long">100</duration> 
<numSteps xsi:type="xsd:int">5</numSteps> 
<scheduledBy xsi:type="xsd:string" xsi:nil="true"/> 
</getFlowRunHistoryByRunIdReturn> 
</getFlowRunHistoryByRunIdReturn> 
</ns1:getFlowRunHistoryByRunIdResponse> 
</soapenv:Body> 
</soapenv:Envelope> 
+0

FYI, WSDL - это всего лишь документ. Он не форматирует ответ. Я также предполагаю, что (только для устранения неполадок) вы просто поймаете исключение и отобразите 'ex.ToString()'. Таким образом, вы получите всю информацию, которую хочет рассказать об исключении. –

+0

Спасибо за ответ, я в конечном итоге выяснил, что объект, который WSDL пытался вернуть, и объект, который он возвращал, был другим. Закончилось писать мой собственный класс, чтобы справиться со всем, насколько это хорошо. – SLippi

ответ

0

Проблемы с генерацией класса WSDL и что это ожидалось, были проблемы. Построение моих собственных классов обработало это.

+2

Добавьте некоторые детали к вашему ответу. Покажите класс, который вы создали, и как он отличается от автоматически созданного класса. Вы также должны показать соответствующую часть WSDL и любые предположения о том, почему это произошло. Вы можете получить ответы на этот ответ. –

Смежные вопросы