Problem mit 2009 R2 Web Service der in die DB schreiben soll

20. April 2016 10:00

Hallo,

wir portieren gerade eine Erweiterung, die wir für NAV 2016 / 2015 gemacht haben auf NAV 2009 R2. Es geht da u.a. um Web Services (Codeunit + XML Port). Dabei haben wir Probleme, wenn diese Daten in die Datenbank schreiben sollen.

In den modernen Versionen funktioniert das tadellos, aber in NAV 2009 R2 klappt das nicht. Ein externes Programm soll an die Web Services Daten senden, die dann in der DB gespeichert werden. Dieses Programm verwendet die WSDL des Web Services, um daraus automatisch die Requests zu erzeugen. Und hier vermuten wir irgendwo das Problem.
Ich habe mal ein klitzekleines Beispiel vorbereitet.

Request (mit SoapUI gesendet, basiert auf der WSDL von NAV):
Code:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:tes="urn:microsoft-dynamics-schemas/codeunit/TestWebService" xmlns:x70="urn:microsoft-dynamics-nav/xmlports/x70050">
   <soapenv:Header/>
   <soapenv:Body>
      <tes:TestFunction1>
         <tes:testXMLPort>
            <!--Zero or more repetitions:-->
            <x70:TestTable>
               <!--Optional:-->
               <x70:Nr>0</x70:Nr>
            </x70:TestTable>
         </tes:testXMLPort>
      </tes:TestFunction1>
   </soapenv:Body>
</soapenv:Envelope>


Response:
Code:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">;
   <s:Body>
      <s:Fault>
         <faultcode xmlns:a="urn:microsoft-dynamics-schemas/error">a:Microsoft.Dynamics.Nav.Types.Exceptions.NavNCLXmlPortUnexpectedElementException</faultcode>
         <faultstring xml:lang="de-DE">The Element &lt;x70:TestTable> is unexpected.</faultstring>
         <detail>
            <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">The Element &lt;x70:TestTable> is unexpected.</string>
         </detail>
      </s:Fault>
   </s:Body>
</s:Envelope>


Entfernt man in SoapUI alle
Code:
x70:
aus dem Request funktioniert die Abfrage. Aktuell ist es uns nicht möglich die Abfrage des externen Programmes zu beeinflussen.
Vielleicht kennt sich jemand hier mit der Materie aus?
Ich habe die Objekte des Mini Beispiels angehängt.
Tabelle 70050
Codeunit 70050
XML Port 70050

Vielen Dank
Heinrich
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.