webForumDet fria alternativet

Vad är felet ?

ASP

29 svar · 558 visningar · startad av Denniss

Medlem sedan maj 2003176 inlägg
Frågan#1

Active Server Pages error 'ASP 0113'

Script timed out

/default.asp

The maximum amount of time for a script to execute was exceeded. You can change this limit by specifying a new value for the property Server.ScriptTimeout or by changing the value in the IIS administration tools.

Medlem sedan mars 20007 896 inlägg
#2

Troligtvis att du har en oändlig loop i ditt script?

Medlem sedan juni 200332 inlägg
#3

skriv lite kod?

Medlem sedan maj 2003176 inlägg
#4

Vad betyder oändlig loop ?

Medlem sedan mars 20025 907 inlägg
#5

Du har exempelvis en do while loop vars villkor aldrig uppfylls => scriptet körs om och om igen tills servern får nog och ger dig felmeddelandet. Som sagt. Visa lite kod

Medlem sedan juni 20034 013 inlägg
#6

> Vad betyder oändlig loop ?

Det betydde döden för den första handdatorn jag hade. Året var väl 1989 nånting och datorns minne var endast RAM, dvs försvann strömmen så försvann minnet. Utöver det ordinarie batteriet som datorn gick på fanns också ett backup-batteri som användes medan man bytte ut det vanliga.

Hade man råkat skriva ett program som inte gick att avsluta så var det kört. Enda sättet att få stopp på det var att starta om datorn genom att ta ur batterierna, men då försvann ju samtidigt allt man hade i minnet, vilket inte var så kul.

Så, man tänkte sig för både en och två gånger när man gjorde en loop så den verkligen avslutades.

En onändlig loop är alltså att programmet inte avslutar själv utan det håller på ändå till man "dödar" det. ASP känner dock av hur länge ett skript har körts, och om det håller på för länge så dödar ASP det och ger det felmeddelandet du fick.

Medlem sedan maj 2003176 inlägg
#7

Jo,vilken del av koden är ni intresserade ? Är det från default.asp ?

Medlem sedan dec. 20003 563 inlägg
#8

mm

Medlem sedan jan. 20032 285 inlägg
#9

Eftersom att felet ligger i default.asp, så ja, det är koden i den filen vi är intresserade av.

Medlem sedan maj 2003176 inlägg
#10

<%
Response.Buffer = True
Response.Expires = -1500
Response.AddHeader "Pragma", "no-cache"
Response.AddHeader "cache-control", "no-store"
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("Database.mdb")&"" %>

<%
set recset = connect.execute("select top 5 * from inlagg where accepterad = true order by datum DESC")
do until recset.eof%>
<%=recset("typ")%>
<%end if%> <br>
<%=replace(left(recset("text"),40),vbCrLf,"")%>

      \<%recset.movenext
      loop%\>
Medlem sedan juni 20034 013 inlägg
#11

Det står "end if" på en rad, men du har inget if nånstans!

Medlem sedan maj 2003176 inlägg
#12

Ju, pga att jag tog bort html kod missade jag en rad:

<%
Response.Buffer = True
Response.Expires = -1500
Response.AddHeader "Pragma", "no-cache"
Response.AddHeader "cache-control", "no-store"
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("Database.mdb")&"" %>

<%
set recset = connect.execute("select top 5 * from inlagg where accepterad = true order by datum DESC")
do until recset.eof%>
<%=recset("typ")%>
<%if not recset("bild") = "" then%>
<%end if%> <br>
<%=replace(left(recset("text"),40),vbCrLf,"")%>

<%recset.movenext
loop%>

Medlem sedan mars 20007 896 inlägg
#13

Du stänger inte dina recordset, och inte heller din koppling mot databasen.

Efter Loop, lägg till följande:

recset.Close
set recset = Nothing

Connect.Close
set Connect = Nothing
Medlem sedan dec. 20003 563 inlägg
#14

Borde väl funka.
Nu även med en liten säkerhetsspärr i form av i ;)

<% 
Response.Buffer = True 
Response.Expires = -1500 
Response.AddHeader "Pragma", "no-cache" 
Response.AddHeader "cache-control", "no-store" 
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("Database.mdb")

Dim i
i = 0
set recset = connect.execute("select top 5 * from inlagg where accepterad = true order by datum DESC") 
do until recset.eof OR i = 5
    response.write(recset("typ"))
    if not recset("bild") = "" then
       %>
       <%
    end if
    response.write("<br />" & chr(10)) 
    response.write(replace(left(recset("text"),40),vbCrLf,""))
    i = i -- 1
    recset.movenext 
loop

recset.Close
set recset = Nothing

Connect.Close
set Connect = Nothing
%>
Medlem sedan feb. 200112 078 inlägg
#15

cyprus skrev:

i = i -- 1

Varför detta? Det finns ingen mening att inte använda + i VBScript.

Medlem sedan maj 2003176 inlägg
#16

Microsoft VBScript runtime error '800a005e'

Invalid use of Null: 'Replace'

/main.asp, line 1270

Varför uppstår det felet ?

Medlem sedan mars 20007 896 inlägg
#17

För att fältet text i din tabell inte innehåller något värde.

Medlem sedan maj 2003176 inlägg
#18

Och vad skall jag göra för att ändra på det ?

Medlem sedan jan. 2003247 inlägg
#19

antingen sätta ett värde på fältet text i databsen, eller ha en if satas som kollar att det finns ett värde på text innan du kör replace

Medlem sedan dec. 20003 563 inlägg
#20

OveRRidE skrev:

cyprus skrev:

i = i -- 1

Varför detta? Det finns ingen mening att inte använda + i VBScript.

Kanske inte just i detta fall men det har blivit en vana.

Plus-tecken har ju en vana att ställa till det om man slarvat lite med datatyperna innan i koden. :) Även i VBScript.

268 ms totalt · 3 externa anrop · v20260731065814-full.767b4345
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)