webForumDet fria alternativet

global.asa

ASP

33 svar · 711 visningar · startad av Jymdis

Medlem sedan mars 20016 260 inlägg
Frågan#1

Varför tas inte dom rader bort som motsvarar customerID? det funkar om jag kör koden på en vanlig sida (dvs allt innanför sub Session_OnEnd och end sub)

<script language="vbscript" runat="server">

sub Application_OnStart

end sub

sub Application_OnEnd

end sub

sub Session_OnStart
Session.Timeout = 1
response.redirect "default.asp"
end sub

sub Session_OnEnd

MM_tshirt_STRING = "liteconnectionsaker"

if(session("customerID")  <> "") then 

Command1__bla = session("customerID") 

set Command1 = Server.CreateObject("ADODB.Command")
Command1.ActiveConnection = MM_tshirt_STRING
Command1.CommandText = "DELETE FROM dbo.cart  WHERE customerID = " + Replace(Command1__bla, "'", "''") + ""
Command1.CommandType = 1
Command1.CommandTimeout = 0
Command1.Prepared = true
Command1.Execute()

else 
response.redirect "fel.asp"

end if 

end sub

</script>
Medlem sedan nov. 2002105 inlägg
#2

Är du säker på att session_OnEnd triggas? Det är inte alltid säkert att den gör det.

Fungerar det verkligen med att använda +-tecken vid konkateneringen istället för &-tecken

Medlem sedan juni 200032 967 inlägg
#3

Det fungerar ibland att använda + istället för & för att konkatenera strängar. Man skall dock inte göra det. Använd & istället.

Annars: du kan inte köra response.redirect i global.asa. Ta bort hela if then-else-end if, och behåll bara koden som var inne i if-blocket.

Mvh

Medlem sedan mars 20016 260 inlägg
#4

response.redirect fungerar hur bra som helst - den delen av koden fungerar....
om jag tar bort hela if then else så blir där fel om ett customer id inte är angivet...

Medlem sedan juni 200032 967 inlägg
#5

Jag vill minnas att det enda sessionsvärdet som finns tillgängligt i global.asa är Session.SessionID, alltså inga ingående variabelvärden. Du får nog spara SessionID också och jämföra mot det i session_onend

Jag har i alla fall svårt att förstå att response.redirect skulle fungera i session_onend, men säger du att det gör det så...

Medlem sedan mars 20002 836 inlägg
#6

@nders, du har helt rätt.
Det enda värde du kan använda dig av från Session-objektet i Session_OnEnd är Session.SessionID.

cya,
PatrikB

Medlem sedan mars 20016 260 inlägg
#7

aha - onend - sorry det var gammal kod som inte skulle vara med.

angående det som var tillgängligt så hade jag också ett gammalt minne men jag förtryckte det för det gör mitt arbete så himla mycket svårare... men ok, då får jag lösa det på det sättet då..
tack för hjälpen.

Medlem sedan mars 20016 260 inlägg
#8
if(session.sessionID <> "") then 
Command1__tempvar = session.sessionID

set Command1 = Server.CreateObject("ADODB.Command")
Command1.ActiveConnection = MM_tshirt_STRING
Command1.CommandText = "DELETE FROM dbo.cart  WHERE sessionID = " + Replace(Command1__tempvar, "'", "''") + ""
Command1.CommandType = 1
Command1.CommandTimeout = 0
Command1.Prepared = true
Command1.Execute()

end if

Funkar ändå inte..

Medlem sedan juni 200032 967 inlägg
#9

På vilket sätt fungerar det inte? Körs inte Session_onEnd?
Den nya koden fungerar om du kör den löst på en asp-sida?

Medlem sedan mars 20016 260 inlägg
#10

jo det funkar på en vanlig sida..
session_onend borde ju köras eftersom alla session variblar tas bort och ett nytt sessionid delas ut...

Medlem sedan juni 200032 967 inlägg
#11

Bara för att en session tar slut behöver det inte betyda att session_onEnd i global.asa körs. Många har problem med att den aldrig körs, exempelvis har jag aldrig fått det att fungera. Visserligen har jag inte försökt speciellt mycket, men...

Session_OnEnd i global.asa har inget att göra med att släppa gamla sessionsid, och framför allt inte med att tilldela nya.

Lägg någon kod som garanterat ska köras, exempelvis loggning till en textfil eller så, för att se om session_onend verkligen körs.

mvh

Medlem sedan mars 20016 260 inlägg
#12

den körs inte :(
bläää.. hur fixar man d? =)

Medlem sedan juni 200032 967 inlägg
#13

Jag gjorde en liten sökning på google (det är inte bara du som har problem, se:sökresultaten), och hittade ett dokument, som i vanlig ordning är svårt att förstå, men av innehållet i artikeln framgår att i alla fall jag hade provat att ge IWAM_xxx tillräckliga rättigheter på databasmappar / mapp som skall skrivas fil till.

Medlem sedan mars 20016 260 inlägg
#14

jag ångrar mig - den körs visst det =)

Medlem sedan mars 20016 260 inlägg
#15

angående det du skriver anders så har jag lite svårt å förstå det för jag skriver till en sql databas å har full rättighet.. men visst jag kan ju prova :)

Medlem sedan juni 200032 967 inlägg
#16

Ok, har vi alltså inga problem längre? :D
red: har alltså IWAM_xxx samma rättighter till databasmappen som IUSR_xxx?

Fick du skriva till fil att fungera? I så fall, logga SQL-frågan till fil och se om den innehåller det den ska.

Mvh

Medlem sedan mars 20016 260 inlägg
#17

jodå.. :) problemet kvarstår.. ;)
ska förklara bättre..

sub Session_OnEnd()
'from här
Application.Lock
Application("visitors")=Application("visitors")-1
Application("sessionruns")=Application("sessionruns")+1
Application.UnLock
'till här fungerar det

MM_tshirt_STRING = "hemligt"

if(session.sessionID <> "") then 
Command1__tempvar = session.sessionID

set Command1 = Server.CreateObject("ADODB.Command")
Command1.ActiveConnection = MM_tshirt_STRING
Command1.CommandText = "DELETE FROM dbo.cart  WHERE sessionID = " + Replace(Command1__tempvar, "'", "''") + ""
Command1.CommandType = 1
Command1.CommandTimeout = 0
Command1.Prepared = true
Command1.Execute()

end if

end sub
Medlem sedan juni 200032 967 inlägg
#18

Prova att ta bort if-satsen runt. Session.SessionID HAR ett värde, du behöver inte kontrollera det.

mvh

Medlem sedan mars 20016 260 inlägg
#19

jag vet inte om jag är helt yr men jag har det som en trusted connection, alltså behöver jag väl inte ge några behörigheter?

red.
tack för du tar dig tid @nders =)

Medlem sedan juni 200032 967 inlägg
#20

ahmr, vad kör du för dbms? jag bara utgick ifrån att du körde Access. Det kanske jag inte skulle gjort... ;)

Spara SQL-frågan i en applicationvariabel, och skriv ut den någon annan stans, för att se om den fjunkar...

På ett ungefär, vad innehåller MM_tshirt_STRING?

268 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)