webForumDet fria alternativet

Server.CreateObject Failed - Aktiva besökare

ASPur ASP

19 svar · 401 visningar · startad av calson

Medlem sedan dec. 2003487 inlägg
Frågan#1

Server object error 'ASP 0177 : 800401f3'

Server.CreateObject Failed

root/global.asa, line 16

<SCRIPT Language="VBScript" Runat="Server">

Sub Application_OnStart
Application("online") = 0
End Sub

Sub Session_OnStart

Dim oFe, oFso, oCtf
Dim iMaxOnline

Application.Lock
Application("online") = Application("online") + 1
Application.Unlock

Set oFe = Server.CreateObject("MSWC.Tools") [b]<- rad 16[/b]
If oFe.FileExists("maxonline.txt") Then
iMaxOnline = Server.Execute("maxonline.txt")
Else
iMaxOnline = 0
End If
Set oFe=nothing

Betyder det här att mitt webhotell inte stödjer MSWC.Tools?

Medlem sedan aug. 20011 087 inlägg
#2

Skulle chansa på att ditt webhotell inte har det installerat ja, har ofta vart så i liknande fall för mig att jag inte haft t.ex jmail eller nått installerat.

Medlem sedan dec. 2003487 inlägg
#3

kan man använda sig utav en databas istället för en txt fil i det här fallet med global.asa?

Set oFe = Server.CreateObject("MSWC.Tools")
If oFe.FileExists("maxonline.txt") Then
iMaxOnline = Server.Execute("maxonline.txt")
Else
iMaxOnline = 0
End If
Set oFe=nothing

If Application("online") > iMaxOnline Then
Set oFso = Server.CreateObject("Scripting.FileSystemObject")
Set oCtf = oFso.CreateTextFile(Server.Mappath("maxonline.txt"), True)
oCtf.WriteLine(Application("online") & ". Rekordet sattes " & date)
oCtf.Close
Set oCtf=nothing
Set oFso=nothing
iMaxOnline = Application("online")
End If
Medlem sedan dec. 2003487 inlägg
#4

eller kan man göra lika dant som man gör i en .asp fil?

Medlem sedan juni 200032 967 inlägg
#5

Ja, man kan använda sig av databas och/eller textfil.

Medlem sedan dec. 2003487 inlägg
#6

ok då får jag pilla lite på det.
Man gör precis som man gör i en .asp fil eller?

Jag har inte använt mig av global.asa förens idag så jag är lite grön på den fronten

Tack

Medlem sedan juni 200032 967 inlägg
#7

Det är vissa objekt / värden du inte kan använda i global.asa, men annars kan du använda ASP i filen.

Trial and error, så lär man sig massor. =)

Medlem sedan dec. 2003487 inlägg
#8

Då har jag fastnat, som väntat :)
Jag får detta felmedelande, det står inte vad som är fel bara att det är fel

error '80020009'

root/global.asa, line 25

<SCRIPT Language="VBScript" Runat="Server">

Sub Application_OnStart
Application("online") = 0
End Sub

Sub Session_OnStart

Dim oFe, oFso, oCtf
Dim objConr, objRs
Dim strSql
Dim intMax

Application.Lock
Application("online") = Application("online") + 1
Application.Unlock

Set objConr = Server.CreateObject("ADODB.Connection")
objConr.Open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=; DATABASE= USER=; PASSWORD=; OPTION=3;"

    strSql = "Select * from tblAktiva"
    set objRs = objConr.execute(strSql)

    if objRs("intMax") <> 0 then ' [b]rad 25[/b]
	intMax = objRs("intMax")
    else
	intMax = 0
    end if

objRs.close
Set objRs = nothing

    if Application("online") > intMax then
	objConr.execute("Update tblAktiva Set intMax=" &Application("online"))
    end if

objConr.close
set objConr = nothing

Application.Lock

if Application("online") = 1 then
  Application("stats") = "Just nu är det bara du inne på sidan"
else
  Application("stats") = "Just nu är det " & Application("online") &" st inne på sidan"
end if

Application.Unlock

End Sub

Sub Session_OnEnd
Application.Lock
Application("online") = Application("online") - 1
Application.Unlock
End Sub

</SCRIPT>

Någon som orkar kolla igenom min kod och säga om jag gjort något galet

Tack på förhand

Medlem sedan juni 200032 967 inlägg
#9

Du måste kolla att inte recordsetet är tomt, dvs EOF, innan du försöker använda värden ifrån det.

Antagligen är ditt recordset tomt, och det är därför du får felet.

mvh

Medlem sedan dec. 2003487 inlägg
#10

Äsch. Jag har ju glömt att skapa en post i databasen :)

En till fråga: Jag testade runt lite nu och märkte att det tar en fasligt lång tid för global.asa att förstå att en eller fler personer inte längre är på sidan.

Jag skapade 8 fönster som alla var på sidan samtidigt, då sivade skriptet att det var 8 pers på sidan men sedan när jag stängde ner alla förnster förutom ett stod det fortfarande 8 istället för 1?

kan man snabba på processen så global.asa kollar om folk försvunnit oftare?

Medlem sedan dec. 2003487 inlägg
#11

Nu funkar databas delen, tack Anders :)

Medlem sedan juni 200032 967 inlägg
#12

Webbapplikationen har inte en aning om när folk stänger sina fönster, utan session.onend körs när sessionen avslutas, antingen genom att timeout inträffar (default är den inställd på 20 minuter) eller att man kallar på Session.Abandon.

mvh

Medlem sedan nov. 20017 144 inlägg
#13

1. Ta genast bort konfidentiell information ur dina inlägg.
(lösenord, osv. i databaskopplingen)
2. sätt en kortare tid på dina sessioner.

Medlem sedan dec. 2003487 inlägg
#14

Tack Jesper

Medlem sedan dec. 2003487 inlägg
#15

Säkert väldigt enkelt men jag kan bara inte komma på hur jag kortar ner tiden för mina sessioner?

Medlem sedan dec. 2003487 inlägg
#16

Session.Timeout = 1

Där satt denm hoppas jag :)

Medlem sedan juni 200032 967 inlägg
#17

Jepp, det är så man gör. Hoppas bara att du inte använder sessionsvariabler för att hålla koll på att man är inloggad eller så bara.

mvh

Medlem sedan dec. 2003487 inlägg
#18

hehe
använder bara sessioner till aktiva besökare :)

Medlem sedan dec. 2003487 inlägg
#19

Tack för all hjälp

Medlem sedan dec. 2003487 inlägg
#20

Nu har jag lagt till session.TimeOut men jag har fortfarande samma fel: Det tar en evighet innan de som inte är inne på sidan försvinner som aktiv besökare.

Jag har satt session.TimeOut = 1 men det tar långt över en minut att få bort den aktiva besökaren. Jag testade att öppna 10 fönster så det vart 10 aktiva användare. Sedan stängde jag ner samtliga förnster förutom 1 som jag lät avvakta.. efter 15 minuter va det fortfarande 10 aktiva besökare?

Finns det något mer effektivt sätt jag kan lösa detta problem eller får jag leva med att det är på detta viset?

<SCRIPT Language="VBScript" Runat="Server">

Sub Application_OnStart
Application("online") = 0
End Sub

Sub Session_OnStart
Session.Timeout = 1
280 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
140 ms — hämta forumlista (db)
136 ms — hämta statistik (db)
141 ms — hämta tråd, inlägg och bilagor (db)