title image


Smiley Re: Global.ASA ist unvollständig !
Hallo Jörg,Deine Global.ASA ist unvollständig.Das Session Objekt ist ein Unterobjekt der Application.Deine Global.ASA enthält ( zumindest lt. Scriptauszug ) kein Application_OnStart, dadurch wird keine Apllikation gestarttet, und ein Session - Objekt kommt nicht zustande.Ich hänge Dir mal einen auszug meiner Global.ASA dran, hier ist außerdem ein User - Logging ( für Testzwecke ) integriert, was in ein Logfile schreibt.Mit Rafa habe ich in der Vergangenheit übrigens eine längere diskussion zum Thema Session_OnEnd / Application_OnEnd geführt, die immer noch nicht beendet ist.Thema :Werden diese ereignisse überhaupt ausgeführt ?Ich habe bereits bei MS und auch bei 4GuysFromRola nachgefragt, ohne eine hinreichende Antwort zu erhalten.Wenn Du das angehängte Script ausführst und in einer entsprechenden Site die Sessionvariablen der User ausgeben läßt, wirst Du feststellen, daß auch nach ablauf der einzelnen sessions die einmal gemeldetetn User NICHT aus den Application - Einträgen entfernt wurden.Diese werden erst entfernt, wenn alle begonnenen Sessions per Timeout beeendet wurden.Das Timeout kannst Du einstellen ( Integer Wert für Minuten ).Öffne zur Kontrolle einfach mehrere Browserfenster, jedes stellt eine Session dar ....Vielleicht noch der Hinweis :Session - Variablen sind Bestandteil eines Arrays, das zu Beginn einer Session mit Dim deklariert werden muß. - Das fehlt in Deinem Script zumindest !!!Also das komplette Script :{SCRIPT LANGUAGE=VBScript RUNAT=Server}Sub Application_OnStart  Application("db_dsn") ="ACCESS" '>> die eingerichtete System-DSN im WEB '==================================================================================================  Application("UsersCount") = 0  Application("CurrentUsers") = ""  Session.Timeout = 15End SubSub Application_OnEnd  On Error Resume Next  IF ( err.Number 0 ) THEN err.clear   dim fso, fle, counter, actFile, forReading, forWriting, forAppenging  forReading = 1  forWriting = 2  forAppenging = 8  actPath = Request.ServerVariables("APPL_PHYSICAL_PATH")  actFile = actPath & "\Sessions.log"  set fso = Server.CreateObject("Scripting.FileSystemObject")   IF ( err.Number 0 ) THEN err.clear  Users = Application("CurrentUsers")  IF ( err.Number0 ) THEN    set fle = fso.opentextfile(actFile,forAppenging)    fle.writeline "Application_OnEnd FEHLER : " & err.number & " | " & err.description & "###"    fle.close    set fle = nothing    set fso = nothing  END IF  set fle = fso.opentextfile(actFile,forAppenging)  fls.writeline "Application_OnEnd Users = " & Users  fle.close  set fle = nothing  set fso = nothingEnd SubSub Session_OnStart  Session.Timeout = 15  ON ERROR RESUME NEXT  response.Status = "Session starts"  IF ( err.Number 0 ) THEN    response.write "Fehler RESPONSE.STATUS = ""Session starts """ & err.description & "{BR}"    err.clear  END IF   Dim FrontPage_SessionVars(30)  '--User Connection Constants  user="#SID" & Session.SessionID & vbCr & vbLf & " LogOnTime " & now() & vbCr & vbLf   For Each name In Request.ServerVariables    user = user & " " & name & " : " & Request.ServerVariables(name) & " || " & vbCr & vbLf  Next  user = user & "******"  Application.Lock  Application("CurrentUsers") = Application("CurrentUsers") + user  Application("UsersCount") = Application("UsersCount") + 1  Application.unlock'========================================================================================================' USER Logging :   dim fso, fle, counter, actFile, forReading, forWriting, forAppenging  forReading = 1  forWriting = 2  forAppenging = 8  actPath = Request.ServerVariables("APPL_PHYSICAL_PATH")  actFile = actPath & "\Sessions.log"  set fso = Server.CreateObject("Scripting.FileSystemObject")  IF NOT fso.fileexists(actFile) THEN    set fle=fso.createtextfile (actFile)    str_log = "!-- ------------------- Start User Logging ---------------------- --!"    fle.writeline str_log    fle.close    set fle = Nothing  END IF  set fle = fso.opentextfile(actFile,forAppenging)  fle.writeline "Session_OnStart : " & user  Users= Application("CurrentUsers")  fle.writeline "Session_OnStart : Users >>> " & Users  fle.close  set fle = fso.opentextfile(actFile,forReading)  entry = CStr(fle.readline)  response.write "GLOBAL ASA : Eintrag Neu= " & entry & "{BR}"  fle.close  set fle = nothing  set fso = nothing'========================================================================================================   Session("Usr_lang")= 0 'Deutsch als Voreinstellung, e - als Alternative  Session("Usr_Browser")= Request.ServerVariables("HTTP_USER_AGENT")  if instr(Session("Usr_Browser"),"MSIE ")>0 then    Session("IE")= true    Session("NS")= false  elseif instr(Session("Usr_Browser"),"MSIE ")    Session("IE")= false    Session("NS")= true  else    Session("IE")= false  end if   FrontPage_StartSession '==FrontPage Generated== End SubSub Session_OnEnd  ON ERROR RESUME NEXT   response.Status = "Session ends"  IF ( err.Number 0 ) THEN err.clear   dim fso, fle, counter, actFile, forReading, forWriting, forAppenging  forReading = 1  forWriting = 2  forAppenging = 8  actPath = Request.ServerVariables("APPL_PHYSICAL_PATH")  actFile = actPath & "\Sessions.log"  set fso = Server.CreateObject("Scripting.FileSystemObject")   IF ( err.Number 0 ) THEN err.clear  Users= Application("CurrentUsers")  sess_ID= Session.SessionID  startpos= instr(Users,"#SID" & sess_ID)  if startpos > 0 then    endpos= instr(startpos + 1, Users, "******")    if endpos > 0 then      strUserLen= endpos - startpos      currUser= mid(Users,startpos,strUserLen)      Users= left( Users, startpos - 1) + mid( Users, endpos + 1)    end if  end if  IF ( err.Number0 ) THEN    set fle = fso.opentextfile(actFile,forAppenging)    fle.writeline "Session_OnEnd ### -Fehler : " & err.number & " | " & err.description & "###"    fle.close    set fle = nothing    set fso = nothing  END IF  IF ( err.Number 0 ) THEN err.clear   Application.Lock  Application("UsersCount") = Application("UsersCount") - 1  Application("CurrentUsers") = Users  Application.Unlock  IF ( err.Number 0 ) THEN err.clear  set fle = fso.opentextfile(actFile,forAppenging)  str_Users = "### " & startpos & " " & endpos & " " & strUserLen & " : Akt. User = " & currUser _ & " - LogOut at : " & now() & "###"  fle.writeline "Session_OnEnd str_Users = " & str_Users  fls.writeline "Session_OnEnd Users = " & Users  fle.close  set fle = nothing  set fso = nothing  IF ( err.Number 0 ) THEN err.clearEnd SubSub FrontPage_StartSession  On Error Resume Next  if Len(Application("FrontPage_VRoot")) > 0 then Exit Sub  ' discover the VRoot for the current page;  ' walk back up VPath until we find global.asa  Vroot = Request.ServerVariables("PATH_INFO")  strG1 = "global.asa"  strG2 = "Global.asa"  iCount = 0  do while Len(Vroot) > 1    idx = InStrRev(Vroot, "/")    if idx > 0 then      Vroot = Left(Vroot,idx)    else      ' error; assume root web      Vroot = "/"    end if    if FrontPage_FileExists(Server.MapPath(Vroot & strG1)) then exit do    if FrontPage_FileExists(Server.MapPath(Vroot & strG2)) then exit do    if Right(Vroot,1) = "/" then Vroot = Left(Vroot,Len(Vroot)-1)    iCount = iCount + 1    if iCount > 100 then      ' error; assume root web      Vroot = "/"      exit do    end if  loop  ' map all URL= attributes in _ConnectionString variables  Application.Lock  if Len(Application("FrontPage_VRoot")) = 0 then    Application("FrontPage_VRoot") = Vroot    UrlVarArray = Application("FrontPage_UrlVars")    for i = 0 to UBound(UrlVarArray)      if Len(UrlVarArray(i)) > 0 then FrontPage_MapUrl(UrlVarArray(i))      response.write "UrlVarArray(" & i & ") = " & UrlVarArray(i) & "{BR}"    next  end if  Application.UnlockEnd SubSub FrontPage_MapUrl(AppVarName)   ' convert URL attribute in conn string to absolute file location  strVal = Application(AppVarName)  strKey = "URL="  idxStart = InStr(strVal, strKey)  If idxStart = 0 Then Exit Sub  strBefore = Left(strVal, idxStart - 1)  idxStart = idxStart + Len(strKey)  idxEnd = InStr(idxStart, strVal, ";")  If idxEnd = 0 Then    strAfter = ""    strURL = Mid(strVal, idxStart)  Else    strAfter = ";" & Mid(strVal, idxEnd + 1)    strURL = Mid(strVal, idxStart, idxEnd - idxStart)  End If  strOut = strBefore & Server.MapPath(Application("FrontPage_VRoot") & strURL) & strAfter  Application(AppVarName) = strOutEnd SubFunction FrontPage_FileExists(fspath)  On Error Resume Next  FrontPage_FileExists = False  set fs = CreateObject("Scripting.FileSystemObject")  Err.Clear  set istream = fs.OpenTextFile(fspath)  if Err.Number = 0 then    FrontPage_FileExists = True    istream.Close  end if  set istream = Nothing  set fs = NothingEnd Function{/SCRIPT}Die Global.ASA muß in der root der Applikation / des Servers stehen !Die Scriptteile nahmens Frontpage werden von Frontpage eingefügt.Viele GrüßeWolfram

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: