Announcement

Collapse
No announcement yet.

Problem mit Variablen und Objekten in ISAPI.dll

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit Variablen und Objekten in ISAPI.dll

    Hallo!

    Ich habe eine Webserver-Anwendung programmiert, die mit IIS läuft. Dabei werden elektronische Fragebögen angezeigt, die der Nutzer beantworten soll.

    Bei Anzeige der ersten Frage wird ein Flag auf "true" gesetzt und mehrere Datenbank-Datasets geöffnet, damit ich mit datasetxy.next usw. bei den nachfolgenden Fragen darauf zugreifen kann. Zur Kontrolle meines Flags habe ich ein Überwachungs-Fenster geöffnet.

    Nachdem die erste Seite angezeigt wurde, ist der Prozess auf einmal nicht mehr vorhanden und mein Flag kann nicht mehr ausgewertet werden. Löse ich nun durch Auswahl auf meiner Seite den nächsten Event aus, so ist das Flag auf einmal auf "false" gesetzt und die Datasets fliegen mir um die Ohren. Befehle wie "qKriterienKTYP_ID.Value" führen zu Exceptions.

    Was mache ich falsch? Sollen die Datenbank-Komponenten vom WebModule besser in ein externen Datenmodul? Ist die ganze Geschichte vielleicht nicht thread-safe?

    Habe jetzt eine weitere Entdeckung gemacht: Ich setzte einen Breakpoint vor die Zeile mit "qKriterienKTYP_ID.Value" und ging mit der Maus über diesen Codeteil. Zuerst zeigte er mit diesen Text an, wenn die Variable nicht vorhanden ist und nach einiger Zeit (paar Sekunden) wechselte das auf einmal in einen richtigen Wert!!! Lies ich das Programm dann weiterlaufen, funktionierte es!!!

    Freue mich über jeden Tip, hänge hoffnungslos fest!!

    Danke & Gruß,

    Pascal

  • #2
    Hallo,

    >..durch Auswahl auf meiner Seite den nächsten Event aus, so ist das Flag auf einmal auf "false" gesetzt ...

    hinter HTTP steckt ein zustandsloses Protokoll. Der IIS führt die ISAPI in einem Pool von Arbeits-Threads aus, wobei aufgrund des zustandslosen Prinzips bei jedem Aufruf mit einem völlig zufällig ausgewählten Thread gerechnet werden muss.

    Wenn die eigene ISAPI die Zustandsdaten benötigt, muss sie sich selbst um diese Verwaltung kümmern. Aus diesem Grund greifen viele in dieser Situation auf Cookies zurück (d.h. der Client-PC speichert im Cookie den Zustand, um diesen bei jedem Aufruf an die ISAPI zu übergeben).

    Erst bei ASP.NET ist eine automatische Zustandssimulation dabei

    Comment

    Working...
    X