Accendo / Publikované

Chybná deserializácia SOAP objektov z Delphi 7 na strane servera

 

Autor: Libor Bešenyi

Dátum: 2008

 

            Keď sme prešli na .Net 3.5 (myslím, že už verzia 2 robila problémy, i keď sme takmer okamžite premigorvali na 3.5, takže nemôžem hovoriť na 100%) tak wsdlimp.exe niektoré (nie všetky) služby naimportoval pre Delphi 7 chybne.

 

            To že boli chybné, sme prišli až na neskoršom bádani. Celý problém bol v tom, že zo strany klienta (Delphi 7) sa všetko odoslalo super, ale na strane servera (ASP .Net 3.5) „prichádzal“ prázdny vstup (aby sa rozserializoval default).

 

            Rýchlo sme to vyriešili tak, že do naimporovaného PAS súboru z WSDL sme doplnili ručne riadok, ktorý tam chýbal (a pre server .Net 1.1 sa nikdy nestratil):

 

InvRegistry.RegisterInterface(TypeInfo(XXX), 'XXX, 'utf-8');

InvRegistry.RegisterDefaultSOAPAction(TypeInfo(XXX), 'XXX');

InvRegistry.RegisterInvokeOptions(TypeInfo(XYZ), ioDocument);