Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: WebActionItems - oder kurz vor dem Durchdrehen

  Alt 29. Aug 2016, 12:25
Hi zusammen

Das Problem ist immer noch nicht gelöst. In den letzten Tagen habe ich mir in einer Excel-Tabelle mal die Werte beim durchsteppen festgehalten.
Auffallend ist dabei die jeweilige Pathinfo und das Ergebnis:
  1. '/html/BahnhofsfestWattwil.html'
  2. '/html/BischofzellerRosenwochen.html'
  3. '/html/AufromantischerSpur1.html'
Nach Programmstart ist die erste PathInfo, die Request enthält immer "/". Das ist zugleich die Pathinfo des Defaulthandlers. Und der ruft das WebactionItem der Homeseite auf. Diese wird so wie es sein soll, angezeigt. Beim debuggen hab ich jeweils im HTML-Menue die Punkte angeklickt, von denen die oben aufgeführten PathInfos stammen. Die Pathinfo-Propertys der WebActionItems haben übereinstimmende Werte.
Interessant ist: die Seiten der ersten beiden Pathinfos wurden nicht dargestellt, und der Browser enthielt auch keinen Seitenquelltext. Was dabei passiert: TWebRequest durchsucht die Collection Webaction, findet keine Übereinstimmung und kappt die Verbindung.
Die dritte Seite hingegen wird dargestellt - zwar ohne Hintergrund und ohne CSS-Formatierung, aber sie wird offenbar gefunden. Und das bei völliger Übereinstimmung der Request- und der WebactionItem.Pathinfo mit den vorangehenden Links. Und nätürlich sind alle diese HTML-Dateien genau da, wohin Pathinfo zeigt.
Irgendwie kam ich dann auf die Idee, dass solch seltsames Verhalten damit zu tun haben könnte, dass ich nirgendwo Critcalsection einsetze, obwohl das komplette Webmodul in einem eigenen Thread abläuft.
Ich hab mich in der Vergangenheit darauf verlassen, dass das Webmodul, bzw. TPageproducer mit Criticalsection arbeitet. Ersteres wird in einer solchen erstellt, bzw aktiviert. Bei letzterem scheint dies nicht der Fall zu sein; zumindest war meine Suche nach 'Criticalsection' in der Unit HTTPProd erfolglos.
Wenn ich mich recht erinnere, gibt es auf den Seiten von Embarcadero auch ein Beispiel dafür, wie man den Pageproducer einsetzt (und nicht nur da). Von Criticalsection war da nirgends was zulesen...
Woher also kommt dieses seltsame verhalten??

Gruss
Delbor

PS: Ein Gedanke, bzw. einige nicht genügend beachtete Quelltextzeilen: Wenn der Browser im geladenen HTML ein src-Tag(..) findet, setzt er eine neue Anforderung ab. Hab ich übersehen, dass das Webmodul nach jeder Antwort deaktiviert und somit immer wieder neu aktiviert wird? Das würde bedeuten, dass auch eine Pageproducer.Content/Contentstream-Antwort eigentlich in einer Criticalsection abläüft...
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat