AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Webbroker und mehrere Seiten unter localhost
Thema durchsuchen
Ansicht
Themen-Optionen

Webbroker und mehrere Seiten unter localhost

Ein Thema von Delbor · begonnen am 28. Sep 2015 · letzter Beitrag vom 29. Sep 2015
 
Delbor

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

Webbroker und mehrere Seiten unter localhost

  Alt 28. Sep 2015, 12:43
Hi zusammen
Der Titel fasst mein Problem ziemlich passend zusammen.

In einem Eventhandler 'OnBeforeDispatch' habe ich folgenden Code:
Delphi-Quellcode:
procedure TWebModule1.WebModuleBeforeDispatch(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  var List: TStringList; Refererstr, SourceStr, LogPath: string; i,x: Integer;
      LogStream : TFileStream;
begin
  List := TStringList.Create;
  LogPath := 'I:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer';
  LogStream := TFileStream.Create(LogPath,fmOpenReadWrite);

  try
    LogStream.WriteBuffer(Request.PathInfo, SizeOf(Request.PathInfo));
    LogStream.WriteBuffer(Request.Referer, SizeOf(Request.Referer));
    LogStream.WriteBuffer(Request.URL, SizeOf(Request.URL));
    Form1.Memo1.Lines.Add('PathInfo := '+ Request.PathInfo);
    Form1.Memo1.Lines.Add('Referer := ' + Request.Referer);
    Form1.Memo1.Lines.Add('From := ' + Request.From);
    Form1.Memo1.Lines.Add('Url := ' + Request.URL);
    Form1.Memo1.Lines.Add('****************************');
    Request.QueryFields.Delimiter := ';';
    Form1.Memo1.Lines.Add('QueryFields : ');
    Request.ExtractQueryFields(List);
    Form1.Memo1.Lines.AddStrings(List);
    Form1.Memo1.Lines.Add('****************************');
    Form1.Memo1.Lines.Add('GetEnumerator := '+ Request.Query);
    Form1.Memo1.Lines.Add('============================');
    

      for i := 0 to Self.Actions.Count -1 do
      begin
        Refererstr := Actions[i].PathInfo;
        if ContainsText(Request.Referer,Refererstr) then
        begin
          x := Pos(Refererstr,Request.Referer);
          SourceStr := Copy(Refererstr,x,SizeOf(Refererstr));
          if Self.Actions[i].PathInfo = SourceStr then
            Actions[i].OnAction(Sender,Request,Response, Handled);
        end;
      end;
  finally
    List.Free;
    LogStream.Free;
  end;
Wenn ich die Exe und anschliessend den Server starte, sieht das so aus, wie im Anhang ersichtlich.
Ich habe festgestellt, dass obige Prozedur bis zu vier mal ausgeführt wird, und offenbar wird das Memo dabei jedesmalüberschrieben. Zumindest schliesse ich das daraus, das die hartgecodeten Stings jeweils nur einmal angegeben sind.

Also versuchte ich, die Strings in ein Logfile zu schreiben, um so festzustellen, ob während der ersten drei Durchgänge die gesuchten Strings geschrieben werden. Aber da wird eine AV geworfen - Zugriff verweigert.
Sehe ich mir den Eigenschaften-Dialog zu den Parentordnern an, sind diese schreibgeschützt. Entferne ich diesen Schutz und übernehme die neuen Einstellungen, sind diese bei einem erneuten Öffnen des Eigenschaften-Dialogs wieder da.

Ein anderes Programm, das eine Ebene höher im selben Ordner liegt, benutzt ungehindert Filestreams...

Für meine diversen Webseiten (und die benötigten Css-Scripts) habe ich jeweils eigene PageProducer-Komponenten in eigenen WebActionItems, nur kriege ich es nicht hin, dass diese auch aufgerufen werden.

Wie, zum Kuckuck, zeige ich weitere als nur die erste Seite in einer Webbrokeranwendung an?

Gruss
Delbor

PS:
Um das untenstehende Kpeg zu machen, musste ich die Anwendung starten und folglich alle Zeilen betreffend den Logstream auskommentieren. Dabei ging eine seltsame Fehlermeldung, die vor dem Start auftritt, fast vergessen:
Delphi-Quellcode:
    LogStream.WriteBuffer(Request.PathInfo, SizeOf(Request.PathInfo));
    LogStream.WriteBuffer(Request.Referer, SizeOf(Request.Referer));
    LogStream.WriteBuffer(Request.URL, SizeOf(Request.URL));
In diesen Zeilen stoppt Delphi die Compilieruung, setzt das Caret vor die letzte Klammer und meckert, da müsse noch eine Variable hin... Die Help gibt aber lediglich an, dass die Prozeduren als overload deklariert sind...
Angehängte Grafiken
Dateityp: jpg Request-Auswertungen 2.JPG (47,6 KB, 32x aufgerufen)
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor (28. Sep 2015 um 12:59 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:11 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