Question:
Why am I getting the error No invokable class registered that implements interface SOAPMidas.IAppSOAP of (soap action/path) "http://www.borland.com/namespaces/Types-IAppServerSOAP" after installing Delphi 6 update pack 2?
Answer:
There is a new property added to TSoapConnection called UseSOAPAdapter.
This property should be True if the backend is a C++ service and false if it is a Delphi service. The default in Delphi is true. If you are getting this error you should change this property to false.
Explanation from Borland R&D:
Delphi SOAP remotes IAppServer 'as-is'. This interface uses the safecall
calling convention that is only available in Delphi. More specifically,
safecall is not available in C++. In order to have C++ and Delphi interop we needed
to expose SoapDM via a different interface. That new interface is
IAppServerSOAP. The latter is essentially IAppServer except that the methods
utilize the stdcall instead of safecall convention. This interface is used
by C++Builder SOAP DataModules.
We struggled with whether Delphi SOAP Modules should be moved to
IAppServerSOAP too. There were several reasons for and against. Eventually,
we settled on leaving Delphi SOAP DM with IAppServer (for now) — mainly for
compatibility reasons.
This means that TSoapConnection can talk to either interface.
The useSOAPAdapter should be true if the backend is a C++ service and false if
it is a Delphi one.
Last Modified: 17-JUN-02