Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi SOAP - XE8 - Exception in iOS Clients (https://www.delphipraxis.net/185893-soap-xe8-exception-ios-clients.html)

weisswe 16. Jul 2015 08:31

SOAP - XE8 - Exception in iOS Clients
 
Hallo!

Ich habe eine iOS Anwendung die zur Steuerung einer SPS verwendet wird.
Zur Kommunikation nutze ich SOAP / Webservice.
Die Anwendung läuft auf 8 iPads und auch normallerweise ohne Probleme.
Nun haben wir sie beim Kunden installiert - jetzt stellt sich heraus, dass zu einem nicht definierten Zeitpunkt eine Exception auftritt.
Diese ich auch zu unterschiedlichen Zeitpunkten. Hab eine Netzwerkanalyse gemacht, um zu testen, ob es stabil ist -> keine Probleme.
In meiner App habe ich auch alle Exceptions abgefangen -> glaubte ich zumindet.
Jedoch trat diese Exception "irgendwo" anders aus. Also habe ich auch eine Application.OnException procedur implementiert, die den Fehler fängt.

Der Fehler tritt auch am Wochenende auf, wo keine Benutzerinteraktion stattfindet.
Das Programm liest aber alle 10 Sekunden den Status der Steuerung -> hier MUSS also der Fehler liegen.
Wie gesagt, habe überall eine TRY EXCEPT eingenaut -> ich glaube das der Fehler beim Aufruf des Webservices auftriff:
Delphi-Quellcode:
try
   if (TcWebService <> nil) then
      TcWebService.ReadState(sNetID, iPort, adsState, deviceState);  // <-- hier "MACHMAL" (1-3x pro Tag) Application.OnException
except
   // wird NIE aufgerufen -> dennoch Exception in Application.OnException...
Die Frage ist WARUM der Fehler auftritt -> nach ca. 3 Zyklen (3x10 Sekunden) ist die Exception wieder weg und die Steuerung funktioniert auch.
Die Exception ist an irgendeiner Speicheradresse -> also nicht wirklich nachzuvollziehen.

Es siehst so aus als würde der Request irgendwie ins "Nirvana" gehen.
Komisch ist nur, das sich der gleiche Aufruf nach ca. 3 Zyklen wieder funktioniert. :?

Hat jemand von euch ähnliche Erfahrungen gemacht?

Grüße,
Werner

kretabiker 16. Jul 2015 09:12

AW: SOAP - XE8 - Exception in iOS Clients
 
Ich weiß nicht, ob meine und deine Probleme zusammenhängen, aber ich habe auch ungewöhnliche Fehlermeldungen gehabt beim Abfragen eines Webservices unter XE8, nachdem ich von XE3 umgestellt habe - siehe diesen Thread:

http://www.delphipraxis.net/185610-s...rt-fehler.html

Der Fehler trat nur unter einer bestimmten Konfiguration auf - OS Win2003 R2 Server -, sonst lief es. In der SOAP-Implementierung in XE8 - vielleicht auch schon frühere Versionen - stecken einige Bugs, insbesondere was die Auswertung von Fehlercodes der WinInet-Funktionen angeht. Vielleicht hilft es, da einen Blick hineinzuwerfen, auch wenn du im iOS-Bereich unterwegs bist. Mir hat dabei das RemoteDebugging mit PAServer sehr geholfen, den Fehler einzugrenzen - ein Tip aus dem genannten Thread.

weisswe 16. Jul 2015 09:32

AW: SOAP - XE8 - Exception in iOS Clients
 
Hallo Udo!

Deinen Thread hab ich gelesen - Unterschied ist es ja prinzipiell mit der Konfiguration funktioniert (Win 7 + XE 8.1),
nur MANCHMAL Aussetzer hat. :?

Mavarik 16. Jul 2015 11:05

AW: SOAP - XE8 - Exception in iOS Clients
 
Sicher das das Netzwerk sich nicht "verschluckt"?

Mit welcher Delphi Version hat Du den WSDL Import gemacht?

Mavarik

Sir Rufo 16. Jul 2015 11:19

AW: SOAP - XE8 - Exception in iOS Clients
 
Du sagst uns nicht, was für eine Exception denn geworfen wird.

Und es ist immer ratsam, alle Exceptions zu fangen, damit man die bloss nicht sieht, denn Exceptions sind ganz böse und sollten daher immer so
Delphi-Quellcode:
try
  // hier was machen
except
end;
auf Teufel komm raus vermieden/unterdrückt werden.

Nicht auszudenken, wenn man plötzlich eine aussagekräftige Exception-Meldung auf dem Bildschirm hat ... :wall:

Der schöne Günther 16. Jul 2015 11:24

AW: SOAP - XE8 - Exception in iOS Clients
 
Gibt es denn unter iOS keinen Stacktrace den man sich im Exception-Fall loggen kann?

weisswe 16. Jul 2015 12:50

AW: SOAP - XE8 - Exception in iOS Clients
 
@Maverick: ja, ganz sicher - Netzwerk läuft extrem stabil (medizinische Einrichtung), WSDL Import Delphi XE8 Enterprise
@Sir Rufo: hatte ja vorher die Excelption Medlung am Screen
->
Code:
"Fehler - Zugriffsverletzung bei Adresse 00B64D42 beim Zugriff auf Adresse 00000000"
.
Das ist alles was ich hab.
Darum habe ich ja die try exception Blöcke eingebaut, um den Fehler zu lokalisieren.
Bin nicht jedem Tag beim Kunden darum wollte ich jetzt ein paar Logging Funktion einbauen bevor ich die neue iOS Version einspiele.
Da der Fehler in genau einer Codezeile auftreten kann (siehe erstes Posting) wollte ich im Forum nachfragen, ob jemand schon ähnliche Probleme mit Webservices hatte.

Das System steuert das Licht in einer medizinischen Einrichtung - wenn immer die "schönen Popup-Fenster" auftauchen, sitzt der Patient im Dunkeln, da die Meldungen ja alle 10 Sekunden kommen (für einen gewissen Zeitraum).. :roll:

Grüße,
Werner

weisswe 20. Jul 2015 10:26

AW: SOAP - XE8 - Exception in iOS Clients
 
Um den Fehler bei den Langzeitests einzugrenzen, hab ich jetzt auch die Application Events mitgeloggt.
Dabei hat sich herausgestellt, das ich den "Low memory" event bekomme.
Also im Timer ruf ich alle 10 Sekunden das Webservice auf.
Muss ich da etwas freigeben oder hab ich sonst etwas vergessen??
Oder gibt iOS nach ein paar Stunden den App Speicher automatisch frei (Optimierung)??
Bin gerade etwas ratlos... :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz