Kommer aldrig till Session_OnEnd...

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • lolukokasos
    Medlem
    • 2001-03-14
    • 196

    #1

    Kommer aldrig till Session_OnEnd...

    Jag har sett en hel del som har haft problem med global.asa-filen i detta forum men har aldrig fått nån riktig förklaring. Nu sitter jag själv och prövar och har insett att det inte är riktigt solklart. Problemet är helt klart att Session_OnEnd aldrig körs. Jag har testat med att på första sidan skapa en session (timeout=1) vilket gör att session_OnStart körs, på en andra sida kör jag session.abandon() men aldrig att den har kommit till Session_OnEnd...puhhh
    Här kommer min global.asa (jag testar därav hårdkodningen i sql'n)
    [kod]
    <SCRIPT LANGUAGE="VBScript" RUNAT="Server">
    Sub Application_OnStart()
    Application("NumberofVisitors") = 0
    End Sub
    Sub Session_OnStart()
    Set con=Server.CreateObject("ADODB.Connection")
    con.Open "driver=etc....
    Application("NumberofVisitors") = Application("NumberofVisitors") + 1
    session.timeout = 1

    sql = "UPDATE user SET online=1 WHERE userId=1"
    con.execute(sql)
    sql2 = "UPDATE user SET online=1 WHERE userId=2"
    con.execute(sql2)
    End Sub
    Sub Session_OnEnd()
    Set con=Server.CreateObject("ADODB.Connection")
    con.Open "driver=etc...
    Application("NumberofVisitors") = Application("NumberofVisitors") + 5
    sql3 = "UPDATE user SET online=0 WHERE userId=2"
    con.execute(sql3)
    End Sub
    Sub Application_OnEnd()
    Application("NumberofVisitors") = 0
    End Sub
    </SCRIPT>

    [/kod]
    och ja, den ligger i roten och jag har testat att vänta i 20min....
  • PatrikB
    Medlem
    • 2000-03-31
    • 2713

    #2
    och på grund av hårdkodningen kommer du aldrig kunna se om session_onend triggas eller inte eftersom så fort du laddar om sidan så triggas session_onstart och "användarna" sätts i online läge igen.

    [r]
    ta bort dbkoden i session_onstart och gå in manuellt i databasen och sätt rätt användare till online. gå sedan till sidan och stäng alla browserfönster eller ha en länk som går till en sida som kör session.abandon.
    Därefter kan du sedan kika manuellt i databasen om värdet för användaren har ändrats
    [/r]

    cya,
    PatrikB

    Comment

    • Toonster
      Medlem
      • 2000-02-14
      • 1546

      #3
      Du får vänta sessionstiden ut dvs. 20 minuter.
      Kör du IIS, kan du sänka värdet, eller som patrikb nämnde, köra session.abandon

      /T
      Jensen Ambassadör, mitt bästa köp! www.jensen.no

      Comment

      • lolukokasos
        Medlem
        • 2001-03-14
        • 196

        #4
        Men Patrik, jag har även väntat ut sessionen då borde väl koden i session_OnEnd köras (om man tittar manuellt i db'n efter att tiden gått ut)? Jag förstår att när man försöker uppdatera en sida där man skapat sessionen så innebär det att _OnStart körs igen. Jag testade ändå det du sa men utan framgång. Jag inser att jag gjort nåt fel nånstans, frågan är bara VAR...

        Comment

        • lolukokasos
          Medlem
          • 2001-03-14
          • 196

          #5
          Nu har jag kommit så långt så att första raden i session_onend körs men inte de övriga finns det nån som har nån idé om vad det kan bero på?

          [kod]
          Sub Session_OnEnd()
          Application("NumberofVisitors") = Application("NumberofVisitors") + 1000
          Set con=Server.CreateObject("ADODB.Connection")
          con.Open "driver={Microsoft Access Driver
          (*.mdb)};dbq="& Server.MapPath("\forum\db\Lforum.mdb")
          sql3 = "UPDATE user SET online=1 WHERE userId=2"
          con.execute(sql3)
          End Sub
          [/kod]

          Comment

          • lolukokasos
            Medlem
            • 2001-03-14
            • 196

            #6
            Är det ingen som kan svara på min fråga? Jag testar och har testat men snart är det inte roligt längre...

            Problemet är att bara första raden i session_onend körs. Varför kan inte koden för uppdateringen av db'n köras?

            Här är hela min global.asa
            [kod]
            <SCRIPT LANGUAGE="VBScript" RUNAT="Server">
            Sub Application_OnStart()
            Application("NumberofVisitors") = 0
            End Sub
            Sub Session_OnStart()
            Set con=Server.CreateObject("ADODB.Connection")
            con.Open "driver={Microsoft Access Driver
            (*.mdb)};dbq="& Server.MapPath("\forum\db\Lforum.mdb")
            Application("NumberofVisitors") = Application("NumberofVisitors") + 1
            session.timeout = 1
            sql = "UPDATE user SET online=1 WHERE userId=3"
            con.execute(sql)

            End Sub
            Sub Session_OnEnd
            Application("NumberofVisitors") = Application("NumberofVisitors") + 1000
            Set con=Server.CreateObject("ADODB.Connection")
            con.Open "driver={Microsoft Access Driver
            (*.mdb)};dbq="& Server.MapPath("\forum\db\Lforum.mdb")
            sql = "UPDATE user SET online=1 WHERE userId=1"
            con.execute(sql)
            End Sub
            Sub Application_OnEnd()
            Application("NumberofVisitors") = 0
            End Sub
            </SCRIPT>

            [/kod]

            Please help ....

            Comment

            • Nisseman
              Medlem
              • 2000-01-21
              • 192

              #7
              Det verkar som att session_onend inte vill ändra i databaser.
              Jag fick det att göra det ett fåtal gånger men det gav upp till slut...
              Application verkar därimot fungera utmärkt!

              Comment

              • PatrikB
                Medlem
                • 2000-03-31
                • 2713

                #8
                Du sätter online=1 i både session_onstart och i session_onend .... då borde det inte visas ngn ändring eftersom ändringen du gör ger samma resultat

                cya,
                PatrikB

                Comment

                • lolukokasos
                  Medlem
                  • 2001-03-14
                  • 196

                  #9
                  PatrikB, om du tittar lite mer på sql-satserna så kommer du märka att jag jag gör online=1 på olika userId i session_onstart och session_onend . Online-kolumnen är av typen J/N och är default = 0.
                  Det här med session_onend verkar för mig vara en stor bugg i asp, kan det verkligen vara så här?

                  Comment

                  Working...