| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Problemer med Session_OnEnd Fra : Thomas Due | 
  Dato :  28-11-03 08:13 |  
  |   
            Hej,
 
 Jeg har en større web application hvor jeg forsøger at holde en liste
 over aktive brugere. Det er for så vidt også lykkedes. Mit problem er
 dog at der ikke bliver ryddet op i dem igen.
 
 Er der noget jeg har fundamentalt misforstået med hensyn til
 Session_OnEnd eller hvad? Min opfattelse er at Session_OnEnd bliver
 udført når Session.Abandon bliver kaldt, eller når sessionen timer ud.
 Det er tilsyneladende dog ikke tilfældet, i det aktive sessions godt
 nok, bliver tilføjet til dataset'et, men de bliver ikke fjernet igen.
 
 Hvad har jeg misforstået, eller gjort galt?
 
 Min kode for henholdsvis Session_OnStart og Session_OnEnd ser således
 ud, Application_OnStart er medtaget af hensyn til definitionen på
 dataset'et, ligeledes instantieringen af dataset'et:
 
 ' ---> definition af dataset'et <---
 <object runat="server" scope="Application" id="rstActiveUsers" 
   progid="ADODB.RecordSet">
 </object>
 ' ---> definition af dataset'et <---
 
 ' ---> Application_OnStart <---
   Sub Application_OnStart
     Application.Lock
       Application("ConnString") = "DSN=ScanXWeb;DRIVER={SQL Server}"
       Application("Visitors") = 0
   
       rstActiveUsers.Fields.Append "SesId", adInteger
       rstActiveUsers.Fields.Append "User", adVarChar, 15
       rstActiveUsers.Fields.Append "User IP", adVarChar, 15
       rstActiveUsers.Fields.Append "Browser", adVarChar, 255
       rstActiveUsers.Fields.Append "Started", adDate
       rstActiveUsers.Fields.Append "Page", adVarChar, 50
       ' Next I open our recordset so that we can use it.
       ' That basically gets everything ready for our
       ' first user.
       rstActiveUsers.Open    
     Application.UnLock
   End Sub
 ' ---> Application_OnStart <---
 
 ' ---> Session_OnStart <---
   Sub Session_OnStart
     Session.Timeout = 20
     Session.LCID = 1030
     Session("Start") = Now()
 
     if not rstActiveUsers.EOF then rstActiveUsers.MoveLast
 
     rstActiveUsers.AddNew
     rstActiveUsers.Fields("SesId").Value = Session.SessionID
     rstActiveUsers.Fields("User").Value = ""
     rstActiveUsers.Fields("User IP").Value =
 Request.ServerVariables("REMOTE_HOST")
     rstActiveUsers.Fields("Browser").Value =
 Request.ServerVariables("HTTP_USER_AGENT")
     rstActiveUsers.Fields("Started").Value = Now()
     rstActiveUsers.Fields("Page").Value =
 Request.ServerVariables("HTTP_REFERER")
     rstActiveUsers.Update
   
     Session("AccessLevel") = 0 ' Initialize the session
 
     Application.Lock
       Application("Visitors") = Application("Visitors") + 1
     Application.UnLock
   End Sub
 ' ---> Session_OnStart <---
 
 ' ---> Session_OnEnd <---
   Sub Session_OnEnd
     rstActiveUsers.MoveFirst
     rstActiveUsers.Find "SesId=" & Session.SessionID, 0,
 AdSearchForward, adBookmarkFirst
     if not rstActiveUsers.EOF then 
       rstActiveUsers.Delete aaAffectCurrent
     end if
 ' ---> Session_OnStart <---
 
 -- 
 Thomas Due
 Software Developer
 Scanvaegt Nordic A/S
 Posted with XanaNews version 1.15.8.1
  
            
             |   |   
            
        
 
            
         
           pepss (28-11-2003) 
         
	
            | Kommentar Fra : pepss | 
  Dato :  28-11-03 09:20 |  
  |   
            
"Thomas Due" skrev
 > Jeg har en større web application hvor jeg forsøger at holde en liste
 > over aktive brugere. Det er for så vidt også lykkedes. Mit problem er
 > dog at der ikke bliver ryddet op i dem igen.
 >
 > Er der noget jeg har fundamentalt misforstået med hensyn til
 > Session_OnEnd eller hvad? Min opfattelse er at Session_OnEnd bliver
 > udført når Session.Abandon bliver kaldt, eller når sessionen timer ud.
 > Det er tilsyneladende dog ikke tilfældet, i det aktive sessions godt
 > nok, bliver tilføjet til dataset'et, men de bliver ikke fjernet igen.
 >
 > Hvad har jeg misforstået, eller gjort galt?
 jeg ved ikke om det har noget med det at gøre men jeg havde problemet da jeg
 brugte en Access database.
 den var for langsom til at blive kørt i session_onend
 -- 
 pepss
 den ordblinde der prøver at blive web-designer   
www.cafe-flirt.dk
www.team-blitz.dk
            
             |   |   
            
        
 
            
         
           Chrisser (28-11-2003) 
         
	
            | Kommentar Fra : Chrisser | 
  Dato :  28-11-03 09:42 |  
  |   
            pepss wrote:
 > jeg ved ikke om det har noget med det at gøre men jeg havde
 > problemet da jeg brugte en Access database.
 > den var for langsom til at blive kørt i session_onend
 
 Ja de to fungerer ikke så godt sammen - ingen ved vist hvorfor men mange har
 bøvlet med det..
 
 Chrisser
 
 
  
            
             |   |   
            
        
 
            
         
            pepss (28-11-2003) 
         
	
            | Kommentar Fra : pepss | 
  Dato :  28-11-03 11:32 |  
  |   
            
"Chrisser" <invalid@invalid.invalid> skrev i en meddelelse
 news:bq71mg$j0j$1@sunsite.dk...
 > pepss wrote:
 > > jeg ved ikke om det har noget med det at gøre men jeg havde
 > > problemet da jeg brugte en Access database.
 > > den var for langsom til at blive kørt i session_onend
 >
 > Ja de to fungerer ikke så godt sammen - ingen ved vist hvorfor men mange
 har
 > bøvlet med det..
 ja det skal jeg love for! jeg brugte en lille månede tid på det    min
 løgsing var at gå over til MySQL som så også gav nogle flere fordele (da jeg
 fik det hele rettet til)
 -- 
 pepss
 den ordblinde der prøver at blive web-designer   
www.cafe-flirt.dk
www.team-blitz.dk
            
             |   |   
            
        
 
            
         
            Thomas Due (28-11-2003) 
         
	
            | Kommentar Fra : Thomas Due | 
  Dato :  28-11-03 11:37 |  
  |   
            Chrisser wrote:
 
 > pepss wrote:
 > > jeg ved ikke om det har noget med det at gøre men jeg havde
 > > problemet da jeg brugte en Access database.
 > > den var for langsom til at blive kørt i session_onend
 > 
 > Ja de to fungerer ikke så godt sammen - ingen ved vist hvorfor men
 > mange har bøvlet med det..
 
 Det skal jeg ikke kunne sige noget om, for jeg anvender slet ikke
 Access. Jeg kører på en MS SQL Server 2000. Men det dataset jeg
 anvender til brugere ligger exclusivt i hukommelsen. Der er slet ingen
 forbindelse imellem det og databasen.
 
 -- 
 Thomas Due
 Software Developer
 Scanvaegt Nordic A/S
 Posted with XanaNews version 1.15.8.1
  
            
             |   |   
            
        
 
            
         
             Chrisser (28-11-2003) 
         
	
            | Kommentar Fra : Chrisser | 
  Dato :  28-11-03 11:40 |  
  |   
            Thomas Due wrote:
 > Det skal jeg ikke kunne sige noget om, for jeg anvender slet ikke
 > Access. Jeg kører på en MS SQL Server 2000. Men det dataset jeg
 > anvender til brugere ligger exclusivt i hukommelsen. Der er slet
 > ingen forbindelse imellem det og databasen.
 
 Hmm, hvad har det så forbindelse til ?
 ( jeg studsede faktisk også lidt over koden - derfor har jeg ikke svaret )
 
 Chrisser
 
 
  
            
             |   |   
            
        
 
            
         
              Thomas Due (28-11-2003) 
         
	
            | Kommentar Fra : Thomas Due | 
  Dato :  28-11-03 12:41 |  
  |   
            Chrisser wrote:
 
 > Thomas Due wrote:
 > > Det skal jeg ikke kunne sige noget om, for jeg anvender slet ikke
 > > Access. Jeg kører på en MS SQL Server 2000. Men det dataset jeg
 > > anvender til brugere ligger exclusivt i hukommelsen. Der er slet
 > > ingen forbindelse imellem det og databasen.
 > 
 > Hmm, hvad har det så forbindelse til ?
 
 DataSet'et der indeholder de aktive brugere er oprettet i hukommelsen.
 Der er ikke kontakt til en database. Som det fremgår at
 Application_OnStart koden bliver kolonnerne oprettet runtime, i
 hukommelsen.
 
 I enhver praktisk henseende skulle det så gerne opfattes som om det er
 et dataset fra databasen. Det fungere fint med hensyn til at indsætte
 poster. Det virker bare ikke når de skal ud igen.
 
 Jeg er lidt bange for at Sessionid måske er "tomt" når Session_OnEnd
 affyres.
 
 -- 
 Thomas Due
 Software Developer
 Scanvaegt Nordic A/S
 Posted with XanaNews version 1.15.8.1
  
            
             |   |   
            
        
 
            
         
               Chrisser (28-11-2003) 
         
	
            | Kommentar Fra : Chrisser | 
  Dato :  28-11-03 12:48 |  
  |   
            Thomas Due wrote:
 > DataSet'et der indeholder de aktive brugere er oprettet i
 > hukommelsen. Der er ikke kontakt til en database. Som det fremgår at
 > Application_OnStart koden bliver kolonnerne oprettet runtime, i
 > hukommelsen.
 >
 > I enhver praktisk henseende skulle det så gerne opfattes som om det
 > er et dataset fra databasen. Det fungere fint med hensyn til at
 > indsætte poster. Det virker bare ikke når de skal ud igen.
 
 Hvis jeg bare forstod hvordan ovenstående fungerede...har du fundet det et
 eller andet sted ?
 
 > Jeg er lidt bange for at Sessionid måske er "tomt" når Session_OnEnd
 > affyres.
 
 Behøver du ikke være, den er der i Session_OnEnd
 
 Chrisser
 
 
  
            
             |   |   
            
        
 
            
         
           Klaus Ambrass (05-12-2003) 
         
	
            | Kommentar Fra : Klaus Ambrass | 
  Dato :  05-12-03 09:09 |  
  |   
            "Thomas Due" <tdue@mail_remove_.dk> wrote in news:bq6sh6$3bu$2@sunsite.dk:
 
 > Hej,
 > 
 > Jeg har en større web application hvor jeg forsøger at holde en liste
 > over aktive brugere. Det er for så vidt også lykkedes. Mit problem er
 > dog at der ikke bliver ryddet op i dem igen.
 > 
 > Er der noget jeg har fundamentalt misforstået med hensyn til
 > Session_OnEnd eller hvad? Min opfattelse er at Session_OnEnd bliver
 > udført når Session.Abandon bliver kaldt, eller når sessionen timer ud.
 > Det er tilsyneladende dog ikke tilfældet, i det aktive sessions godt
 > nok, bliver tilføjet til dataset'et, men de bliver ikke fjernet igen.
 > 
 > Hvad har jeg misforstået, eller gjort galt?
 > 
 > Min kode for henholdsvis Session_OnStart og Session_OnEnd ser således
 > ud, Application_OnStart er medtaget af hensyn til definitionen på
 > dataset'et, ligeledes instantieringen af dataset'et:
 > 
 
 <snip kode>
  
 
 Får du ikke nogen fejl som kunne give et hint om hvad der er galt?
 Jeg har selv rodet med on-the-fly recordsets hvilket er en god ting.
 Måske hænger hele miseren på hvilken slags Open du laver i 
 Application_start.
 
 Du angiver blot rstActiveUsers.Open - hvis du ikke explicit angiver noget 
 om låsning og cursortype, defaulter recordsettet måske til den forkerte 
 type, og du kan ikke bruge .Find. Det havde jeg selv en masse bøvl med. JEg 
 endte med at lave noget mere simpelt ved at bruge et dictionaryobjekt.
 
 
 -- 
 Klaus Ambrass
 
 IT - Storstrøms Amt
 kamNO@SPAMit.stam.dk
  
            
             |   |   
            
        
 
            
         
           Thomas Due (08-12-2003) 
         
	
            | Kommentar Fra : Thomas Due | 
  Dato :  08-12-03 08:32 |  
  |   
            Klaus Ambrass wrote:
 
 > Får du ikke nogen fejl som kunne give et hint om hvad der er galt?
 > Jeg har selv rodet med on-the-fly recordsets hvilket er en god ting.
 > Måske hænger hele miseren på hvilken slags Open du laver i 
 > Application_start.
 
 Det ved jeg faktisk ikke. Men jeg må jo prøve at lave en eller anden
 log funktion. Det er den eneste måde jeg har at lave debugging i
 Session_OnEnd ikke?
  
 > Du angiver blot rstActiveUsers.Open - hvis du ikke explicit angiver
 > noget om låsning og cursortype, defaulter recordsettet måske til den
 > forkerte type, og du kan ikke bruge .Find. Det havde jeg selv en
 > masse bøvl med. 
 
 Ok, det vil jeg da undersøge. 
 
 -- 
 Thomas Due
 Software Developer
 Scanvaegt Nordic A/S
 Posted with XanaNews version 1.15.8.1
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |