Angepasste Exception-Klassen für Web-Services erstellen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Server mit Web-Service-Unterstützung schreiben


Wenn die Web-Service-Anwendung bei dem Versuch, eine SOAP-Anforderung auszuführen, eine Exception auslöst, werden Informationen über diese Exception automatisch in einem SOAP-Fehlerpaket codiert, das anstelle der Ergebnisse des Methodenaufrufs zurückgegeben wird. Anschließend wird die Exception von der Client-Anwendung gemeldet.

Standardmäßig meldet die Client-Anwendung eine allgemeine Exception des Typs InvokeRegistry.ERemotableException mit den im SOAP-Fehlerpaket enthaltenen Informationen. Sie können zusätzliche, anwendungsspezifische Informationen übermitteln, indem Sie eine ERemotableException-Ableitung erstellen. Die Werte der published-Eigenschaften, die Sie der Exception-Klasse hinzufügen, werden in das SOAP-Fehlerpaket aufgenommen, so dass der Client eine entsprechend angereicherte Exception melden kann.

Um eine von ERemotableException abgeleitete Klasse verwenden zu können, müssen Sie diese in der Remotable-Typ-Registrierung eintragen. Dazu müssen Sie in der Unit, welche den Nachkommen von ERemotableException definiert, die uses-Klausel um die Unit InvokeRegistry ergänzen und einen Aufruf der Methode RegisterXSClass desjenigen Objekts hinzufügen, welches die globale Funktion RemTypeRegistry zurückgibt.

Sofern der Client ebenfalls die ERemotableException-Ableitung definiert und registriert hat, meldet er bei Empfang des SOAP-Fehlerpakets automatisch eine Instanz der entsprechenden Exception-Klasse, wobei alle Eigenschaften auf die im SOAP-Fehlerpaket übermittelten Werte gesetzt werden.

Damit Clients in der Lage sind, Informationen über den von Ihnen definierten ERemotableException-Nachkommen zu importieren, müssen Sie diese Klasse bei der Aufruf-Registrierung und ebenso bei der Remotable-Typ-Registrierung anmelden. Fügen Sie zu diesem Zweck einen Aufruf der Methode RegisterException desjenigen Objekts hinzu, welches die globale Funktion InvRegistry zurückgibt.

Siehe auch