---
title: "Global.asa, en gång för alla"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/13619-global-asa-en-gång-för-alla"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "edebro"
published: "2002-01-06T19:41:00.000Z"
updated: "2002-01-07T20:48:00.000Z"
replies: 7
views: 346
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/13619-global-asa-en-gång-för-alla"
---

# Global.asa, en gång för alla

## #1 — edebro, 2002-01-06T19:41Z

Jag tycks inte få global.asa att fungera som jag vill

Jag ska altså skriva till en databas när en användare lämnar sidan, med denna kod:

Sub Session_OnEnd
	' öppna Access databasen
	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../db/data.mdb")
	
	' säg till databasen att personen är offline
	Connect.Execute("UPDATE users SET Online = '' WHERE Username = '" & Session("username") & "'")
	
	Connect.Close
	Set Connect = Nothing
	
	
	Application.Lock
		Application("Active") = Application("Active") - 1
	Application.UnLock
End Sub

Det som är jävligt störande är att det fungerade för ca 3 dagar sen.
Jag har gjort lite ändringar sen dess, bland annat installerat SMTP tjänsten.

Varför fungerar det inte?
Det verkar som om global.asa gör lite som den vill tycker jag

Måste man ge just den filen några speciella rättigheter eller varför fungerar det inte?

Jag har provat både på MS SQL databaser och Access

Har ni några tips hur man ska ställa in det för att den ska fungera

Alla tips är välkommna

Jag kör IIS 5.1 under Windows XP

Permalänk: https://www.webforum.nu/p/13619

## #2 — PatrikB, 2002-01-07T08:48Z

Hello,

du kan inte använda dig av: Session("username") i Session_OnEnd

Det enda som du kan verifiera mot är: Session.SessionID som är den unika nyckeln för ett session och det enda som finns kvar när Session_OnEnd triggas.

Dvs, du måste ha ett fält med i tabellen som du spar SessionID i och sedan verifiera mot det fältet istället för Username fältet.

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/303165

## #3 — erka, 2002-01-07T09:05Z

är det sannt ? damn därför inte detta har fungerat smärtfritt då alltså...

```
'	Sub Session_OnEnd
'		'PLOCKA BORT PERSONEN IFRÅN APPLICATION 
'		Application.Lock
'			strUserName = Session("UserName")
'			If strUserName <>"" and Application("Online")<>"" then
'				strTmp=Application("Online")
'				IntId =instr(strTmp,"*" & strUserName)
'				strTmp2=left(strTmp,IntId-1) & right(strTmp,len(strTmp)-IntId-len(strUserName))
'				Application("Online")=strTmp2
'			End If
'		Application.UnLock
'	End Sub
```

Men jag har ju sätt att folk har gjort så som jag har gjort ovan på flertalet exempel där de säger att de har fungerat. \*\*riva hår\*\*

Permalänk: https://www.webforum.nu/p/303166

## #4 — PatrikB, 2002-01-07T11:31Z

Går säkert att göra.
Som du vet så är inte dessa "triggers" speciellt bra. Funkar på vissa installationer medans det inte alls funkar på andra.

Det säkraste sättet är ändå att verifiera mot SessionID .....

Application() variabler är variabler som ALLA besökare kommer åt över hela siten, så de är nog inte speciellt bra att tex spara usernames i.

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/303167

## #5 — edebro, 2002-01-07T17:39Z

patrikB......hmm, men det skumma är ju att det fungerade förr, med precis samma kod

Fast jag ska prova din metod iaf, den verkar säkrare : )

Du menar altså att jag ska göra ett fält i databasen där jag sätter värdet av Session.SessionID och sen öppna den posten sen i global.asa

Altså nåt så här:

Sub Session_OnEnd
' öppna Access databasen
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../db/data.mdb")

' säg till databasen att personen är offline
Connect.Execute( "UPDATE users SET Online = '' WHERE SessionID = " & Session.SessionID )

Connect.Close
Set Connect = Nothing

Application.Lock
Application("Active") = Application("Active") - 1
Application.UnLock
End Sub

då ska det altså fungera smärtfritt
Det är altså ingen inställning eller liknande som kan göra att det inte fungerar, för det som är störande är att jag vet fler än mig som använder Session("value") i global.asa(Session_onEnd)

Jaja, jag får testa, tack för tipset

Permalänk: https://www.webforum.nu/p/303168

## #6 — edebro, 2002-01-07T17:51Z

nu känner jag mig lite kluven, patrikB säger att man inte kan använda Session i Session_onEnd, men enligt detta inlägget verkar det gå endå <http://cgi.webforum.nu/wf/Forum11/HTML/000008.html> 

för er som inte orkar läsa så kan jag dra en snutt

citat av toha

"Det verkar som om jag hade fel: session-egenskaper kan man använda sig av i session_OnEnd i global.asa.
Men vad jag ser i din kod är att du använder en session-variabel i Application_OnEnd och det går ju då rakt inte eftersom eventen inte ligger på användarnivå.

Jag också kommit fram till att det troligtvis är som du säger, att global.asa inte fungerar i PWS.
Jag använder själv PWS hemma men har inte använt mig av den innan."

Permalänk: https://www.webforum.nu/p/303169

## #7 — edebro, 2002-01-07T19:07Z

patrikB:

> Går säkert att göra.
> Som du vet så är inte dessa "triggers" speciellt bra. Funkar på vissa installationer medans det inte alls funkar på andra.

så du menar alltså att det fungerar på vissa installationer, man kan altså inte vara säker på att global.asa kommer att fungera på just sin installation eller?

Tycker hela skiten verkar vara en bugg, ska faan bombhota MS \*arg som faan efter flera dagars försök\* :D

Permalänk: https://www.webforum.nu/p/303170

## #8 — edebro, 2002-01-07T20:48Z

nu har jag gjort så här iaf, jag skapar en ny textfil i Session_onEnd funktionen, och det fungerar lite si och så.

Det verkar fungera när sessionen blir timeout, fast mindre bra när man stänger webbläsarfönstret

Sen har jag en till fråga, anropas Session_onEnd efter man gör: Session.Abandon?

Orsaken till att jag frågar är att jag ska slippa köra samma kod 2 ggr, dvs i logout.asp så sätter jag Session.Abandon, och då ger det ju inte så mycket att skriva till databasen om den lika gärna ska köra koden i Session_onEnd

Svar nån?

Permalänk: https://www.webforum.nu/p/303171

---

Tråden på webben: https://www.webforum.nu/amne/asp/13619-global-asa-en-gång-för-alla
