Я создал простой Net WebSvc Client, который получает актуальную ссылку на Sap WebSvc. Он ожидает String и четыре элемента, отправленных по ссылке: три массива пользовательских объектов и другой пользовательский объект за пределами любой структуры коллекции (у меня есть их формат на странице ссылки)
Когда вызывается запрос на выполнение операции, я получаю SoapException «Сбой десериализации» в строке вызова. ( Внизу я пишу: фрагмент моего кода, метод Reference.cs, который я вызываю, и ошибку, настолько полную, насколько я могу. )
Исследуя сеть, я обнаружил эту ветку форума SAP, на которой кто-то отвечает, что распространенными проблемами, которые показывают эту ошибку, являются не обновленные wsdl и подчеркивание в именах переменных-членов но ни один из них не мой случай. На самом деле тема продолжалась, но без ответа парню с той же проблемой, что и у меня.
В любом случае, я думаю, ребята из StackOverflow более активны; -)
Заранее спасибо людям!
Извлечение моего кода:
string destiny = "myDest";
ZICQService ZICQ = new ZICQService();
ZtyEE070[] innerHeadList = HeadLst.ToArray();
ZtyEE071[] innerObjList = ObjLst.ToArray();
Zrequest[] innerTRequest = TRequest.ToArray();
//This is the row of the Deserialization failed
Bapiret2 respnse = svc.ZbcInsertRequest(destiny, ref innerHeadList, ref innerObjList, IClrQst, ref innerTRequest);
А это мой веб-сервис Метод привязки Reference.cs:
[System.Web.Services.Protocols.SoapDocumentMethodAttribute
("", RequestNamespace="urn:sap-com:document:sap:soap:functions:mc-style",
ResponseNamespace="urn:sap-com:document:sap:soap:functions:mc-style",
Use=System.Web.Services.Description.SoapBindingUse.Literal,
ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[return: System.Xml.Serialization.XmlElementAttribute("Return", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public Bapiret2 ZbcInsertRequest(
[System.Xml.Serialization.XmlElementAttribute
(Form=XmlSchemaForm.Unqualified)]
string Destino,
[System.Xml.Serialization.XmlArrayAttribute
(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
[System.Xml.Serialization.XmlArrayItemAttribute
("item", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=false)]
ref ZtyEE070[] EtRequestHeader,
[System.Xml.Serialization.XmlArrayAttribute
(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
[System.Xml.Serialization.XmlArrayItemAttribute
("item", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=false)]
ref ZtyEE071[] EtRequestObj,
[System.Xml.Serialization.XmlElementAttribute
(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
Zclrqstdat IClrqst,
[System.Xml.Serialization.XmlArrayAttribute
(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
[System.Xml.Serialization.XmlArrayItemAttribute
("item", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=false)]
ref Zrequest[] TRequest)
{
object[] results = this.Invoke("ZbcInsertRequest", new object[] {
Destino,
EtRequestHeader,
EtRequestObj,
IClrqst,
TRequest});
EtRequestHeader = ((ZtyEE070[])(results[1]));
EtRequestObj = ((ZtyEE071[])(results[2]));
TRequest = ((Zrequest[])(results[3]));
return ((Bapiret2)(results[0]));
}
Ошибка:
System.Web.Services.Protocols.SoapException
было обработано
Сообщение = "Сбой десериализации"
Source = "System.Web.Services"
Actor = "" Lang = "en" Node = ""
Role = "" StackTrace:
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage
сообщение, ответ WebResponse, поток
responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String
methodName, Object [] параметры)
at SCM.Manager.mx.com.hylsamex.hmxwasd1.ZICQService.ZbcInsertRequest(String
Destino, ZtyEE070 [] & EtRequestHeader,
ZtyEE071 [] & EtRequestObj, Zclrqstdat
IClrqst, Zrequest [] и TRequest) в
D: \ Documents and Settings \ apacay \ My
Документы \ Visual Studio
2005 \ Projects \ Desarrollo
SCM \ scm.manager \ SCM.Manager \ Web
Ссылки \ mx.com.hylsamex.hmxwasd1 \ Reference.cs: строка 85
at SCM.Manager.SAPDataMockUp.SendOTs() in
D: \ Documents and Settings \ apacay \ My
Документы \ Visual Studio
2005 \ Projects \ Desarrollo
SCM \ scm.manager \ SCM.Manager \ SAPDataMockUp.cs: строка 164
at SCM.Manager.Threads.HandleSap.Send()
в D: \ Documents and Settings \ apacay \ My
Документы \ Visual Studio
2005 \ Projects \ Desarrollo
SCM \ scm.manager \ SCM.Manager \ Threads \ HandleSap.cs: строка 24
at SCM.Manager.Front.Main(String[] args)
в D: \ Documents and Settings \ apacay \ My
Документы \ Visual Studio
2005 \ Projects \ Desarrollo
SCM \ scm.manager \ SCM.Manager \ Front.cs: строка 170
at System.AppDomain._nExecuteAssembly(Assembly
сборка, строка [] args)
at System.AppDomain.ExecuteAssembly(String
сборка файла, доказательства
AssemblySecurity, String [] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext
executeContext, ContextCallback
обратный вызов, состояние объекта)
at System.Threading.ThreadHelper.ThreadStart()