You are not logged in.
Why after 10 seconds this error occurs while the server is working?
First chance exception at $7566C41F. Exception class EInterfaceFactoryException with message 'Invalid fake IRemoteAction.Execute interface call: : '. Process Project.exe (6020)
Last edited by corchi72 (2013-02-22 15:45:19)
Offline
Did you use the latest 1.18 version from http://synopse.info/fossil/wiki?name=Get+the+source ?
There is no message error detail here.
It depends on your server and client code.
Difficult to tell what's wrong, here.
Offline
"Did you use the latest 1.18 version from http://synopse.info/fossil/wiki?name=Get+the+source ?"
Yes, I use the last versione.
However, It may be helpful, this error that occurs:
First chance exception at $7566C41F. Exception class EInterfaceFactoryException with message
'Invalid fake IRemoteAction.Execute interface call: : {
"ErrorCode":500,
"ErrorText":"Exception EAccessViolation: Access violation at address 0064AFB9 in module 'PrjServer.exe'. Read of address 20202003"
}'.
Process ProjectClient.exe (296)
Tells you something?
I'm trying to use an OCX in the server.
If run the same code with the following statement works
type
TServiceRemoteAction = class(TInterfacedObject, IRemoteAction)
protected
fExecuteAction: TExecuteActions;
public
procedure AfterConstruction; override;
procedure BeforeDestruction; override;
public // implements IRemoteAction methods
procedure Connect;
function Execute(AOwner: TComponent;aID:Integer;Force:Boolean): Boolean;
end;
.....
function TFileServer.ExecuteOCX(
var aParams: TSQLRestServerCallBackParams): Integer;
var
sID:RawUTF8;
RemoteAction :TServiceRemoteAction;
begin
UrlDecodeValue (aParams.Parameters,'ID=',sID,@aParams.Parameters);
try
RemoteAction := TServiceRemoteAction.Create;
RemoteAction.Connect;
RemoteAction.Execute(Strtoint(sID)); // my procedure that open Ocx create in a TDataModule
finally
RemoteAction.Free;
end;
result := 200; // success
end;
Offline
I suspect the OCX, just like COM objects, shall be initialized for each thread.
Try to use a Synchronize() call to execute the method in the main thread.
Or use an interface-based service, which has the corresponding option built-in.
Offline