Avatar billede eyesonly Nybegynder
10. april 2006 - 21:08 Der er 13 kommentarer og
1 løsning

global.asa: Problemer med at skrive til databasen i Session_OnEnd

global.asa er rimelig nyt for mig, men jeg ser en masse fordele i bl.a. de objekter man kan erklære der, men især også i den eventhåndtering man har mulighed for.

Jeg er f.eks ved at bruge det til at lave et simpelt log system. Når en bruger går ind på siden skriver global.asa i databasen forskellige informationer om brugeren, heriblandt det tidspunkt brugeren er gået ind på siden. Når brugerens session timer ud, så vil jeg gerne skrive det tidspunkt i databasen. Mit problem ligger så i at jeg ikke kan få lov til at skrive til databasen i Session_OnEnd.

Jeg har prøvet med en SQL update sætning, jeg har prøvet med et RecordSet og jeg har sågar prøvet at gentage koden fra Session_OnStart. Er der nogen der kan forklare mig hvorfor jeg ikke kan skrive til databasen?

Koden:
Sub Session_OnStart
  Application.Lock
  Application("onlinevisitors") = Application("onlinevisitors") + 1
  Application.UnLock
 
  Dim strSQL
  strSQL = "INSERT INTO log_session ( started, ip, browser ) VALUES ( " &_
          "#" & Now() & "#, " &_
          "'" & Request.ServerVariables( "REMOTE_ADDR" ) & "', " &_
          "'" & Request.ServerVariables( "HTTP_USER_AGENT" ) & "' )"
  objConnection.Open
  objConnection.Execute( strSQL )
  objConnection.Close
End Sub

Sub Session_OnEnd
  Application.Lock
  Application("onlinevisitors") = Application("onlinevisitors") - 1
  Application.UnLock
 
  Dim strSQL
  strSQL = "INSERT INTO log_session ( started, ip, browser ) VALUES ( " &_
          "#" & Now() & "#, " &_
          "'TEST', " &_
          "'TEST' )"
  objConnection.Open
  objConnection.Execute( strSQL )
  objConnection.Close
End Sub
Avatar billede cpufan Juniormester
10. april 2006 - 21:31 #1
prøv at fjerne
dim strsql i onend

da du dimmer den 2 gange, giver det fejl.

men jeg ved ikke om det er nok.
Avatar billede eyesonly Nybegynder
10. april 2006 - 21:38 #2
Er prøvet, men er det ikke også lige meget så længe det er inden for 2 forskellige subs?

Tro mig jeg synes virkelig alt er prøvet, jeg har ovenikøbet kopieret indholdet af begge subs over i en asp fil og fået det til at virke, men når jeg putte det tilbage i mine event subs, så sker der nada ved Session_OnEnd. Jeg troede et øjeblik at det var fordi den aldrig nåede at køre den sub, men fandt så ud af at tælleren virkede fint.
Avatar billede eagleeye Praktikant
10. april 2006 - 22:30 #3
Hvis du bruger funktionen. Server.Mappath til at finde stien til databasen virker det ikke i Session_OnEnd der skal man bruge fysik sti til database c:\sti\til\databasefil.mdb
Avatar billede softspot Forsker
10. april 2006 - 23:40 #4
Iflg. W3Schools om global.asa (http://www.w3schools.com/asp/asp_globalasa.asp under sektionen "Restrictions" - ca. halvejs nede på siden), står der at man rent faktisk HAR adgang til Server i Session_OnEnd-eventet, så det burde ikke være det der er galt.

Jeg synes dog jeg har hørt at W3Schools har fejlinformeret før, så det kan da godt være at eagleeye har ret (det har man jo hørt om før :)).
Avatar billede eagleeye Praktikant
11. april 2006 - 00:04 #5
Ja w3scoll er en god side men den er dog ikke fejlfri :)

Fra Microssoft:
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.


Det betyder faktisk også at det ikke er sikkert man kan tilgå Access filen, med mindre man giver brugeren "Everyone" eller "Alle" skrive rettighed til den folder database filen ligger i.

kide:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/302058df-eb4a-4967-8309-f7b07f525ebb.asp


Her en side på dansk omkring global.asa som bruger en database i Session_OnEnd:
http://www.a-begynder.dk/artikler/diverse/global-asa.htm
Avatar billede eyesonly Nybegynder
11. april 2006 - 20:58 #6
Jeg kan desværre ikke rigtig se hvordan Server.Mappath kan have nogen indflydelse. Jeg erklærer min connection som et global.asa object, initialiserer connection strengen i Applicatin_OnStart (det er her jeg bruger Server.MapPath) og den virker fint i Session_OnStart...burde den så ikke også virke fint i Session_OnEnd?
Avatar billede eagleeye Praktikant
11. april 2006 - 21:51 #7
Er det access du bruger?
Avatar billede eagleeye Praktikant
11. april 2006 - 22:03 #8
Hvis det er Access har du så prøvet at give brugeren "Everyone" eller "Alle" skriverettighed til den folder database filen ligger i.
Avatar billede eyesonly Nybegynder
11. april 2006 - 22:16 #9
Ja det er Access.

I IIS'en er der sat kryds i anonymous access, hvilket betyder at der ikke kræves identifikation for at få adgang til mappen. Er det det du mener? Jeg kender godt til "Sharing and security" på mappen, men fanebladende herunder hedder "General", "Sharing", "Web Sharing" og "Customize". Normalt kan man tilføje "Everyone" under "Sharing" -> "Permissions", men den kan jeg ikke bruge medmindre jeg deler mappen og det er jeg ikke interesseret i.
Avatar billede eagleeye Praktikant
11. april 2006 - 22:23 #10
Ja det var Security fanen jeg tænkte på. Findes everyone ikke i forvejen?
Avatar billede eyesonly Nybegynder
11. april 2006 - 23:33 #11
Det er svært at sige, for permissions er jo slet ikke tilgængelige før man deler mappen. Det er den i hvert fald ikke her :-)
Avatar billede softspot Forsker
11. april 2006 - 23:37 #12
Der er da en fane som hedder sikkerhed i stifinder under egenskaber for den pågældende folder. Tilgængeligheden af den er ikke afhængig af at man har delt folderen. Der skal Everyone have adgang...
Avatar billede eagleeye Praktikant
11. april 2006 - 23:38 #13
Hvis du har Windows XP kan det måske hjælpe at slå "Simple File Sharing" fra det gøres ved:
- Åbn "My Computer"
- Klik på menupunktet "Tools"
- Vælg "Folder Options..."
- Klik på fanen Vis
- Fjern flueben i "Simple File Sharing" så mener jeg man får adgang til at sætte det op.
Avatar billede eyesonly Nybegynder
19. juni 2006 - 11:12 #14
Jeg fik det aldrig til at virke...beklager!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester