Jag har gjort en besöksstatistik-lösning för min sida, där det sparas ner en rad i en Access-db med datum och tid när en session startas. Koden ligger under Session_OnStart. Problemet är att när jag vill titta på besöken via en annan asp-sida som ligger i en underkatalog triggas OCKSÅ Session_OnStart, så statistiken blir missvisande. Jag får alltså en ny rad varje gång jag öppnar stitistiksidan. Hur kan man komma runt detta? Jag har försökt att läga en annan GLOBAL.ASA i underkatalogen, med det hjälper inte, den andra GLOBAL.ASA tar över så att säga... En global.asa-fil gäller alltid för en web site, dvs en virtuell rot och alla dess underkataloger. Om jag har en website med följande struktur: Jag är inte helt säker på att detta funkar, men om du skriver en If-sats i Global.asa och frågar efter varifrån man kommer med Request.ServerVariables("HTTP_REFERER"), borde man kunna selektera bort besök från sidan i din undermapp. Löste det med att kolla Request.ServerVariables("URL") i GLOBAL.ASA, som ger mig från vilken url anropet kommer. Om det kommer från min statistiksida sparar jag inget i databasen. Session_OnStart - problem
Sv: Session_OnStart - problem
/rot
global.asa
default.asp
/underkatalog
foo.asp
I min global.asa har jag en Session_OnStart-funktion som räknar besökare. Nu kommer två besökare (A & B) till min site. Bägge två har precis startat sin browser och inte varit på siten tidigare.
A skriver in http://www.minsite.se/default.asp
B skriver in http://www.minsite.se/underkatalog/foo.asp
Resultatet kommer att bli att bägge startar funktionen Session_OnStart (en gång för varje besökare alltså) och min statistik räknas upp två steg (eller nåt). Om vi inte vill att sidorna som ligger i katalogen rot/underkatalog (i detta fallet endast en sida, foo.asp) ska räknas (eller åtminstone inte starta samma Session_OnStart som den andra sidan) så räcker det inte att lägga en annorlunda global.asa i rot/underkatalog, därför att rot/underkatalog är inte definierad som en webbapplikation, utan endast som en del av den övriga webbapplikationen. Global.asa gäller alltså för hela webbapplikationer.
Som du kanske redan listat ut så behöver du ändra en sak för att din andra global.asa ska gälla för foo.asp. Skapa en virtuell site under din webbsite (/rot alltså), vilken pekar på filmappen som innehåller foo.asp och döp den till underkatalog. Detta innebär alltså att filmappen inte behöver (och inte kan heller) ligga under den filmapp som webbsiten (/rot) pekar på, utan kan ligga var som helst på datorn, eftersom du pekar ut vilken filmapp du vill använda för din virtuella site. Eftersom denna ligger under din riktiga webbsite kommer den därigenom ändå att få den webbadress som den hade tidigare. Nu räknas denna som en webbapplikation, och således kan den även ha en egen global.asa (och måste nog ha det också tror jag).Sv: Session_OnStart - problem
Sv: Session_OnStart - problem