Rene Kadner
2014-07-22 08:41:54 UTC
Hallo,
ich habe einen Webservice für den IIS in C# geschrieben und kann diesen von
Delphi aus ansteuern. Eigentlich ist alles gut.
Nun bekomme ich aber Instabilitäten. Irgendwann hängt sich der IIS auf. Nach
dem Neustart geht es wieder ein paar Tage. Um der Ursache auf den Grund zu
gehen habe ich ein kleines Testprogramm geschrieben. Das holt sich vom
Webservice nur den String "Hello World". Beim Beobachten der Counter habe
ich festgestellt, dass die Verbindung lange offen bleibt, sobald ich die
Abfrage einmal durchgeführt habe. Beende ich mein Delphi Programm, ist die
Verbindung sofort weg, der Kanal also wieder frei.
Jetzt zu meiner Frage. Was kann ich zur Laufzeit tun, damit der Kanal
ebenfalls wieder sofort freigegeben wird. Bisher habe ich das hier versucht,
aber ohne Erfolg:
Bisher schreibe ich immer kurz:
s := GetAx5ServiceSoap(false, wsUrl).HelloWorld;
Beim Blick in den Wrapper hoffte ich, mit dem Ax5ServiceSoap Objekt irgend
etwas tun zu können:
procedure TForm1.GetHelloWorld;
var s: string;
assp: Ax5ServiceSoap;
begin
assp := GetAx5ServiceSoap(false, wsUrl);
try
try
s := assp.HelloWorld;
except
on e: Exception do s := e.Message;
end;
finally
assp := Nil; // ohne Wirkung
//FreeAndNil(assp); .. LZ-Fehler
//Dispose(@assp); .. LZ-Fehler
//(assp as Ax5ServiceSoap)._Release; .. LZ-Fehler
end;
Das bringt aber leider nichts.
Andere Ideen?
Gruß
René
ich habe einen Webservice für den IIS in C# geschrieben und kann diesen von
Delphi aus ansteuern. Eigentlich ist alles gut.
Nun bekomme ich aber Instabilitäten. Irgendwann hängt sich der IIS auf. Nach
dem Neustart geht es wieder ein paar Tage. Um der Ursache auf den Grund zu
gehen habe ich ein kleines Testprogramm geschrieben. Das holt sich vom
Webservice nur den String "Hello World". Beim Beobachten der Counter habe
ich festgestellt, dass die Verbindung lange offen bleibt, sobald ich die
Abfrage einmal durchgeführt habe. Beende ich mein Delphi Programm, ist die
Verbindung sofort weg, der Kanal also wieder frei.
Jetzt zu meiner Frage. Was kann ich zur Laufzeit tun, damit der Kanal
ebenfalls wieder sofort freigegeben wird. Bisher habe ich das hier versucht,
aber ohne Erfolg:
Bisher schreibe ich immer kurz:
s := GetAx5ServiceSoap(false, wsUrl).HelloWorld;
Beim Blick in den Wrapper hoffte ich, mit dem Ax5ServiceSoap Objekt irgend
etwas tun zu können:
procedure TForm1.GetHelloWorld;
var s: string;
assp: Ax5ServiceSoap;
begin
assp := GetAx5ServiceSoap(false, wsUrl);
try
try
s := assp.HelloWorld;
except
on e: Exception do s := e.Message;
end;
finally
assp := Nil; // ohne Wirkung
//FreeAndNil(assp); .. LZ-Fehler
//Dispose(@assp); .. LZ-Fehler
//(assp as Ax5ServiceSoap)._Release; .. LZ-Fehler
end;
Das bringt aber leider nichts.
Andere Ideen?
Gruß
René