![]() |
Win-CGI mit Delphi: Start eines anderen Prozesses
Hallo,
habe hier eine Windows-CGI (TWebModule), indem ich einen anderen Prozess starten muss und auf dessen Beendigung warten muss. Problem ist, dass das ganze unter Windows 2003 mit IIS laufen soll. Wenn ich per CreateProcess eine prozess starte funzt das bei mir (IIS Express V8), beim Anwender kommt ein völlig sinnfreier Exitcode (3221225509) - und nein, ich verwende keinen Exitcode in der Anwendung :-) Gibt es unter dem IIS vom Windows 2003er Server noch was zu beachten? Frage: Wenn ich anstelle einer Anwendung diese per DLL bereit stelle und diese in das CGI einbinde: Woher bekommt die DLL dann den Speicher? Ich befürchte, die bekommt den selben Speicherbereich wie die Anwendung? Oder einen separaten (d.h. eigene 2 GByte extra)? Grüße |
AW: Win-CGI mit Delphi: Start eines anderen Prozesses
Dort
![]() ![]() Ursache ist (vermutlich)
Code:
Tippe mal darauf, dass beim Anwender irgendwas anders ist, als von Dir / dem CGI erwartet und von daher eine Exception auftritt, mit der nicht gerechnet wird und die deshalb das CGI "abrauchen" lässt.
#define STATUS_NONCONTINUABLE_EXCEPTION ((DWORD )0xC0000025L)
Prinzipiell müsste dieser ExitCode darauf hinweisen, dass ein gestarteter Prozess mit einer Exception beendet wird. Dies könnte aus IIS-Sicht das CGI sein oder aus CGI-Sicht ein per CreateProcess gestarteter Prozess. Funktioniert beim Anwender das CGI, wenn es nix weiter macht, als z. B. "Hallo Welt" auszugeben? Sprich: Funktionieren bei ihm CGIs überhaupt? Im Zweifelsfalle im CGI die Exceptionbehandlung "extremst aufmotzen" und in 'ne Datei loggen, was gemacht wird, um so die Fehlerursache eingrenzen zu können. Muss es ein CGI-Module sein? Ginge auch 'ne ISAPI-Dll? Damit müsste der IIS zurechtkommen. Zum "Umbau" braucht es nicht viel: Neues Projekt für 'ne ISAPI-Dll erstellen, dort das erstellte Webmodul rauswerfen, das Webmodul des CGIs aufnehmen, kompilieren, fertig (auf der Delphiseite). Vorteil von CGIs: Sie reißen im Fehlerfalle den Webserver nicht mit runter, was bei 'ner ISAPI-Dll passieren kann. Nachteil: Es ist deutlich langsamer, da es immer neu geladen und initialisiert werden muss. Das passiert bei 'ner ISAPI-Dll nur einmalig. Bei CGIs ist die Fehlerbehandlung oft ein "Schwarzes Loch", da man Fehler nicht zwingend mitbekommt, bei ISAPI-Dlls könnte vom Webserver ein etwas verständlicherer Fehlerhinweis kommen. Den IIS hab' ich nie selbst konfigurieren müssen, von daher kann ich nicht sagen, was dort dann erforderlich ist. Bei meinem Webserver reicht es aus, die DLL in das entsprechende Verzeichnis zu kopieren und man kann sie nutzen. Ob's beim IIS auch so einfach ist, weiß ich nicht. Ob's das Problem löst allerdings auch nicht :-( Eventuell weiß da jemand mehr: ![]() |
AW: Win-CGI mit Delphi: Start eines anderen Prozesses
Mosche,
die cgi läuft bei denen so schon seit Jahren, IIS also korrekt konfiguriert, das passt. "Problem": Ich muss aus der CGI diese exe nochmal aufrufen, mit anderen Startparametern. Die Startparameter von Hand in den Browser getippt läuft auch alles reibungslos. Nur eben das Starten aus der laufenden cgi raus nicht. Ich habe die Tage versucht per Indy HttpClient die cgi über den Webserver nochmal auszuführen, klappt aber leider nicht. Danke jedenfalls für den Tipp mit dem Exitcode - wäre nie im Leben drauf gekommen, damit im Netz zu suchen / als Hex zu suchen. Umbau auf irgend was anderes is nicht, Umstellung auf Linux ist im Gange, aber bis dahin muss die Win-Version noch laufen, egal wie.... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz