Frank: Scriptverarbeitung friert ein ?!

Hi,

ich bin gerade am basteln und stehe jetzt vor einem Problem, daß das Script irgendwie stehen geblieben ist, als würde sich der Server an irgendetwas die Zähne ausbeissen. Ein Tip wie "Typisch ASP und Windows" würde mir jetzt nicht viel weiterhelfen, da ich etwas ähnliches schon in anderen Sites hinbekommen habe, sprich es ist mehr ein Programmiertechnisches Problem meinerseits

Hier etwas Code

currDesignFolder = Application("$systemroot$") & "templates" & rs_gdt("Designfolder")
currDesignFile = currDesignFolder & rs_gdt("Designvorlage")
'designFile wird zu ttpl_html   (toptemplate_html)
IF fso.FileExists(currDesignFile) <> True THEN
 Response.Write "<h3>Designvorlagendatei nicht vorhanden - Generierung gestoppt</h3>"
 set rs_recset = nothing
 set rs_gdt = nothing
 exit sub
END IF
Response.Write "currDesignFolder: " & currDesignFolder & "<br>" & "currDesignFile: " & currDesignFile & "<br> <br>"

Bis hierhin funktioniert es wunderbar!
Ausgabe:

currDesignFolder: I:\Projekte\miniCMS\templates\standard\ currDesignFile: I:\Projekte\miniCMS\templates\standard\navigation.htm

set ttpl = fso.OpenTextFile(currDesignFile,forReading)
ttpl_html = ttpl.ReadAll
ttpl.close
set ttpl = nothing
Response.Write "<p>Datei ausgelesen</p>"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Das wird nicht mehr geschrieben, also muß er irgendwas davor monieren. Ich habe aber testweise schon mal die Berechtigungen ab \miniCMS.... für IUSR auf vollzugriff gesetzt. Das hat es aber anscheinend auch nicht gebracht. Einen Fehler bringt er nicht. Das FileSystemObject ist mit Server.CreateObject und vorher mit CreateObject angelegt worden, keine Veränderung.

Hat jemand eine Erklärung dafür?

Tschau, Frank

  1. Hi auch,

    Bis hierhin funktioniert es wunderbar!
    set ttpl = fso.OpenTextFile(currDesignFile,forReading)
    ttpl_html = ttpl.ReadAll
    ttpl.close
    set ttpl = nothing
    Response.Write "<p>Datei ausgelesen</p>"
    Das wird nicht mehr geschrieben

    Wie wäre es mit Ausgaben nach jeder Zeile?
    Klappt das Öffnen?
    Klappt das Lesen?
    Klappt das Schließen?
    Klappt das Freigeben?
    Dein Programm ist bisher auffällig wenig robust.

    also muß er irgendwas davor monieren.

    Kommt darauf an, wer "er" ist und wie sich das "monieren" äußert.
    Was liefert DeinWebserver denn so an Debug-Informationen?

    Das FileSystemObject ist mit Server.CreateObject und vorher mit
    CreateObject angelegt worden, keine Veränderung.
    Hat jemand eine Erklärung dafür?

    Das Problem ist letzten Endes, daß Du mit dem FileSystem-Objekt eine
    black box verwendest. Vor dem Ansprechen tut es, nachher nicht.
    Reinsehen kannst Du anscheinend nicht.
    Wenn dies alles zutrifft, dann ist Dein Problem nicht systematisch lösbar.

    Also:

    • entweder liefert Dir das fso noch irgendwelche Informationen
        (ich habe keine Ahnung davon, da müßtest Du schon Dein Manual fragen)
    • oder Deine Entwicklungsumgebung verdient es, hinterfragt zu werden
        (aber das wolltest Du ja nicht hören)

    Viele Grüße
          Michael

    1. Hallo,

      danke für deine Anteilnahme.

      Wie wäre es mit Ausgaben nach jeder Zeile?

      Ja, das hab ich gerade nochmal in einzelschritten gecheckt. Ab >fso.OpenTextFile< will er nicht mehr.

      Klappt das Öffnen?
      Klappt das Schließen?
      Klappt das Freigeben?

      Anlegen des Objektes funktioniert wunderbar, schließen (gleich) danach auch.

      Klappt das Lesen?

      Genau das nicht, nur noch FileExists ausnahmsweise ?!!

      Dein Programm ist bisher auffällig wenig robust.

      Ich hab die Zeilen des Originalscripts auch ziemlich gekürzt. Aber selbst wenn ich eine einzelne Datei nur mit Objekt anlegen, Öffnen, Schließen bastele und ausführe, hängt er sich förmlich auf.

      Kommt darauf an, wer "er" ist und wie sich das "monieren" äußert.

      er = IIS, monieren = er schreibt alle Zeilen bis OpenTextFile und danach bringt er in der IE-Statusleiste nur noch "Öffne .....", Opera schreibt nur "Sende Anfrage an....."

      Was liefert DeinWebserver denn so an Debug-Informationen?

      Nix, das ist ja das Problem, er arbeitet weiter, bis er zum ScriptTimeout gelangt und da bringt er halt den ASP Fehler für Script-Timeout.
      Auch wenn ich das NTFS umgehe und einfach versuche von einer FAT32 Partition zu lesen, das gleiche Resultat.

      Ich hab jetzt nochmal meinen Laptop mit Win2K aus meinem Büro rangeholt und auf diesem OEM-installierten Win2K die Site eingerichtet, selbes Problem.

      Probiere ich es bei meinem ISP, kein Problem. Lesen, schreiben alles...

      (ich habe keine Ahnung davon, da müßtest Du schon Dein Manual fragen)

      Ich hab alles von MSDN bis Google abgegrast, kein Hinweis auf irgendeinen Bug im IIS.

      • oder Deine Entwicklungsumgebung verdient es, hinterfragt zu werden
          (aber das wolltest Du ja nicht hören)

      Nee, eigentlich nicht, weil im Büro hab ich noch einen Rechner stehen, auch Win2K, auf dem funktioniert das auch alles problemlos.

      Trotzdem vielen Dank für deine Bemühungen.
      Viele Grüße

      Frank

      1. Hi Frank,

        ich bin zwar kein ASP Guru, spiele aber auch gerade in dieser Ecke rum.
        Mein dickes ASP Buch schlägt folgendes vor:

        ' Verhindern, dass andere Fehler die Ausführung unterbrechen
        On Error Resume Next
        .. Dein Befehl ..
        ' Prüfen ob ein Fehler aufgetreten ist
        If Err.Number <> 0 ...

        Mit Err.Description bzw. Err.Source kann dann auf die Beschreibung bzw. den Namen des Objektes zugegriffen werden.

        HTH
        Thomas

        1. Hi Frank,

          ich bin zwar kein ASP Guru, spiele aber auch gerade in dieser Ecke rum.
          Mein dickes ASP Buch schlägt folgendes vor:

          ' Verhindern, dass andere Fehler die Ausführung unterbrechen
          On Error Resume Next
          .. Dein Befehl ..
          ' Prüfen ob ein Fehler aufgetreten ist
          If Err.Number <> 0 ...

          Mit Err.Description bzw. Err.Source kann dann auf die Beschreibung bzw. den Namen des Objektes zugegriffen werden.

          HTH
          Thomas

          Hi,

          danke für deine Bemühung.

          Ich hab das mal ausprobiert, er hängt weiter an der selben Stelle.
          Wenn er einen Script-Fehler hätte, dann würde er mir ihn an dieser Stelle auch schon bringen, wenn er das Kommando abgearbeitet hätte.
          Aber er ("IIS") scheint sich da die Zähne auszubeißen.
          Per VBS-Script die Prozedur laufen zu lassen klappt fantastisch.

          Yo, ich fürchte dann doch langsam, daß irgendwas an der Installation des IIS faul sein muß.

          Mal schauen, vielleicht kann ich mich zu einer Neuinstallation durchringen.

          Danke, tschau, Frank

  2. Hallo Frank,

    set ttpl = fso.OpenTextFile(currDesignFile,forReading)
    ttpl_html = ttpl.ReadAll
    ttpl.close
    set ttpl = nothing
    Response.Write "<p>Datei ausgelesen</p>"
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    evtl. hilft: http://www.aspfaq.de/index.asp?FID=115&ELE=10011

    Tschau, Stefan

    1. Hallo Frank,

      set ttpl = fso.OpenTextFile(currDesignFile,forReading)
      ttpl_html = ttpl.ReadAll
      ttpl.close
      set ttpl = nothing
      Response.Write "<p>Datei ausgelesen</p>"
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      evtl. hilft: http://www.aspfaq.de/index.asp?FID=115&ELE=10011
      Tschau, Stefan

      Hi hallo,

      ich hab gerade schon auf Spotlight den Tip gelesen - hat funktioniert!

      Danke auch an dieser Stelle nochmal!

      Frank