Linkage to rodl file lost when using runtime packages

I can’t reproduce this issue.
Delphi server - server.zip (108.1 KB)
C# client - client.zip (5.8 KB)

I guess you dont get the error bcz you use Remobjects Components Client Side.
I add the Service Reference through Visual Studio (Add Service Reference)
I have updated the client code
client_update.zip (10.6 KB)

Regards

pls review updated client client_update2.zip (8.6 KB)

you need to add Service Reference as

When I add the service like that indeed its working with descending types too.
I guess I will have to change that in my application, even though its interesting why it suddenly doesnt work like before.

For me this case is closed.

Thanks for the support
Regards

Well, I thoght its done, but changing to webreference caused some new issues with my service.

  1. Async methods return void instead of my return type. How can I change that? Do I need to do smt inside of Visual studio or within Delphi while creating the service ?

I also tried setting those settings when adding the web reference but it didnt change anything:

  1. I cant access array types form my service, they are all changed to C# arrays. For example I was using IntArray from my service, now I have to convert it to int[]. I tried to change the datatype values while adding the web reference, but nothing is changing, it still generates int[] instead of IntArray (I have lots of different array types and it would be too much work to change their behaviour to fit C# arrays). So is there a way to keep my service types and dont let them change to C# types?

Regards

Hello

At first I have to say that all the stuff below refers to tools shipped with Visual Studio, not ones from RemObjects.

Please note that RO SDK provides way more performant and easy to develop ways to communicate between server and client than SOAP. Also it is possible to expose more than one endpoint in the same server - f.e. SOAP one and a more efficient binary serializer for ‘native’ RO SDK clients

The dialog on your screenshots sets options for Service Reference while you create and use the Web Reference that is a completely different thing.

From Visual Studio 2005 onwards the Add Web Reference proxy generator no longer creates the BeginXXX/EndXXX methods. These methods were deprecated in favour of the XXXAsync/XXXCompleted pattern.

Async calls now look like

MyService my = new MyService();
my.HelloCompleted += CallBack;
my.HelloAsync();
Console.WriteLine("Called service.");
Console.ReadLine();  // Wait, otherwise console app will just exit.

However it is still possible to generate Begin/End method pairs instead of this patern. Please take a look at c# - asynchronous webservice call. No (Begin...) method available! - Stack Overflow

In considers such type definitions as plain .NET arrays

<xs:complexType name="IntArray">
 <xs:sequence>
  <xs:element name="int" minOccurs="0" maxOccurs="unbounded" type="xs:int" /> 
 </xs:sequence>
</xs:complexType>

AFAIK there is no way to customize this

Regards

Obiously I will have to switch to REMObjects in order to get it running again…

When I call one of my functions, this is the error I get:

Ein Ausnahmefehler des Typs "RemObjects.SDK.Types.ServerException" ist in RemObjects.SDK.dll aufgetreten.

Zusätzliche Informationen: '4da6a80d-c266-42a3-b626-b64fcbd420c5' kein gültiger Wert für GUID

What does this error usually mean ?

Regards

can you review uROSOAPMessage.pas and update _ParseGuid method as

function TROSOAPMessage.ParseEnvelope : boolean;

  function _ParseGuid(value: string): TGUID;
  begin
    if (pos('{',value) = 0) then begin //changed
      value := '{'+value+'}'
    end;
    result := StringToGUID(value);
  end;

after updating, pls retest

Just to be clear, I am getting that error on my Visual Studio client (with Remobjects).
The code you posted is Delphi, so I should do my changes inside delphi (server side)?

Regards

yes, pls change server-side code (delphi)

After first couple tests it seems to work and I can call my remote methods without the error message. But I will write again when I convert my whole client.

One question, is that a bug in my build ?

Regards

if you mean code in _ParseGuid - it was bug and it was already fixed

Hi,

is there any fixed bug regarding enum types ?

When I set one of my types (server side) as an enum and try to retrieve it on the client I get an error while serializing.

For example (server):

Akthistory.Art := jxsDatenTyp_dtForderung

this is the type:

[RODocumentation('Deutsch: Definition des Typs fuer einen Eintrag in der Akthistorie  English: Type definition for an item in the filehistory')]
  jxsDatenTyp = (
    [RODocumentation('Deutsch: Forderung  English: Claims')]
    jxsDatenTyp_dtForderung,
    [RODocumentation('Deutsch: Leistung  English: Service')]
    jxsDatenTyp_dtLeistung,
    [RODocumentation('Deutsch: Zahlung  English: Payment')]
    jxsDatenTyp_dtZahlung,
    [RODocumentation('Deutsch: Termin  English: Calendaritem')]
    jxsDatenTyp_dtTermin,
    [RODocumentation('Deutsch: Notiz  English: Notice')]
    jxsDatenTyp_dtNotiz,
    [RODocumentation('Deutsch: Dokument  English: Document')]
    jxsDatenTyp_dtDokument
  );

Now when I try to get the value in my client, I get an error message inside:

ReadComplex

In particular its this line:

Art = ((jxsDatenTyp)(serializer.Read("Art", typeof(jxsDatenTyp), RemObjects.SDK.StreamingFormat.Default)));

I checked

serializer.ReadWideString("Art")

and endeed, the value is “” (empty) which cannot be true (especially not when its an enum type). The error message is “wrong format type” (because an empty string is being converted to an integer)

Am I missing something here ?

My workaround for now is that I changed Art to type integer, and I set ord(jxsDatenTyp_dtForderung) as the value and then it works fine.

Regards

Hello

You use a CodeFirst server and SOAP message,am I right? May I ask you for a testcase (simple server with the same message settings and only one method that sends the abovementioned structure)?

bugs://i63814 was closed as fixed.

Logged as bugs://i63814.