Problem gelöst
OK, es war doch ein Fehler im Server und nicht im Experten.
Es waren 2-3 Fehler in Logging und Fehlerbehandlung.
* auf EventObject.ServerClass im Queue zuzugreifen, wenn es dieses DatenObjekt nicht mehr gibt
* die
Exception im Queue wir in den aufrufenden Thread durchgereicht, aber dort nicht ausgegeben
* und somit wurde der Fehler nicht angezeigt
* dann war bei den DataSnap-Admin-Methoden ala DSAdmin.GetServerMethodParameters die ServerClass = nil
* und da es selten Spaß macht die
IDE mehrfach zu starten, seit es Recovery gibt und die
IDe extrem langsam geworden ist (in den letzten 15 Jahren immer mehr)
* hatte ich den Serverprozess ohne Debugger gestartet
Zitat:
Delphi-Quellcode:
procedure TServerContainer1.DSAuthenticationManager1UserAuthorize(
Sender: TObject; EventObject: TDSAuthorizeEventObject;
var valid: Boolean);
begin
TThread.Queue(nil, procedure
begin
Form1.Memo1.Lines.Add(Format('UserAuthorize User=%s ServerClass=%s MethodAlias=%s',
[EventObject.UserName, EventObject.ServerClass.ClassName, EventObject.MethodAlias]));
end);
Delphi-Quellcode:
procedure TServerContainer1.DSAuthenticationManager1UserAuthorize(
Sender: TObject; EventObject: TDSAuthorizeEventObject;
var valid: Boolean);
var
Log: string;
begin
if Assigned(EventObject.ServerClass) then
Log := Format('UserAuthorize User=%s ServerClass=%s MethodAlias=%s',
[EventObject.UserName, EventObject.ServerClass.ClassName, EventObject.MethodAlias])
else
Log := Format('UserAuthorize User=%s ServerClass=nil MethodAlias=%s',
[EventObject.UserName, EventObject.MethodAlias]);
TThread.Queue(nil, procedure
begin
Form1.Memo1.Lines.Add(Log);
end);
Ein Therapeut entspricht 1024 Gigapeut.