OBS! Tråden är redigerad ett antal gånger pga. infouppdateringar. Se noteringar längst ner i tråden. :)
Jag har under min tid i forumet märkt att många har problem att få funktioner såsom utloggningar och statistikfunktioner att fungera i Session_onEnd (eller i Application_onEnd heller. Tillagt 2003-12-17) i global.asa. Och eftersom global.asa inte ger nåt felmeddelande, kan det vara mycket svårt att felsöka denna fil, vilket är förståeligt.
Jag kan ha hittat en lösning på detta, speciellt i samband med de problem som relateras med databas-händelser i Session_onEnd eller Application_onEnd.
Följande finns att läsa på MSDN, i referensen för global.asa:
MSDN skrev:
Remarks
You cannot call the Server.MapPath method in the Session_OnEnd script. By default, Session_OnEnd runs as the Anonymous User, as defined for the application. In the event that there isn't an Anonymous user, or the Logon for the Anonymous user fails, the OnEnd function will not be called, and an event will be logged.
Som texten utläser, går det alltså inte att använda mappath-metoden i session_onEnd. Alltså, se till att t.ex. lagra en fysisk sökväg till databasen i exempelvis en applicationvariabel som hårdkodas in i global.asa:s funktion Application_OnStart:
sub Application_OnStart
application("strConn") = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & [red]server.mappath("/data/data.mdb")[/red]
end sub
sub Application_OnEnd
end sub
sub Session_OnStart
end sub
sub Session_OnEnd
'gör nåt skoj
'här kan du använda application("strConn") eftersom sökvägen
'redan är fysisk, sedan vi använt mappath i [i]onStart[/i].
end sub
---
RED1: Ni som är osäkra på global.asa kan läsa mer om den i mitt aningen överambitiösa inlägg här eller här.
RED2: För er som inte vet vad mapPath-metoden gör, kan jag förklara att den omvandlar en virtuell sökväg till en fysisk för att kunna använda denna i t.ex. kopplingssträngar i databaskopplingar. Sökvägen '/data/data.mdb' blir således t.ex. 'c:\inetpub\wwwroot\data\data.mdb' om den körs igenom server.mappath(). Läs mer här. :stud :)
RED3, 2003-12-17: Jag har nu grävt lite till i detta ämne och uppdaterat tråden med bland annat en anledning till varför inte Server.MapPath inte går att använda i Session- eller Application_OnEnd, vilket inte framgick i den andra länken. MSDN har flyttat om, så jag fick länka om alla länkar dit igen. :p
RED4: Viktigt att komma ihåg är att i händelse av misslyckande med anrop av denna metod, så loggas felet i Event-loggen i Windows, som texten ovan utröner. Länk till referens för global.asa finner ni här.
RED5: Jag hittade en (för vissa) intressant tråd om Debugging i global.asa. Kanske kan vara något att ha? Utgår ifrån VS.NET, dock.