Hej. Det beror helt och hållet på vad inc_results.asp innehåller, testa att ta bort raden som refererar till den och se vad som händer. Fungerar det då så har du problemet där. Även om det ligger inom en if-sats så kan innehållet i filen ändra på det om den innehåller en end if. När du exekverar din sida kommer innehållet i filen "klistras in" i koden först, sedan körs hela sidan, oavsett om exekveringen går in i if-satsen eller ej. Det är därför koden kan påverka ändå. Fast det finns ingen överbliven End If i den bifogade filen... Jag har också testat att plocka bort include-raden, utan resultat. Mycket märkligt, stäng av "snälla felmeddelanden" eller vad det nu kan tänkas heta i din webläsare så att du ser det riktiga felmeddelandet. Testa även att ta bort rad för rad för att se vad som orsakar felet. Av någon anledning var jag tvungen att be mitt webbhotell att slå på felmeddelanden, men det är gjortnu. Då framkom det att jag helt enkelt deklarerat samma variabel på två ställen, så det var lätt att fixa. Nu funkar allt perfeket. Bra att du hittade felet, ett tips när du kör fast utan felmeddelanden att gå efter:Varför körs denna kod?
På en av mina aspsidor finns denna kodsnutt, som inte innehåller särskilt mycket mer än en databaskoppling och en include-rad.
<code>
<%
If Request.Querystring("base") = "all" Then
Dim myConn, strSQL
Set myConn=server.createObject("ADODB.Connection")
myConn.Open("DRIVER={MySQL ODBC 3.51 Driver};Server=xxx.se;Database=xxx;UID=xxx;PWD=xxx;")
strSQL = "Select * from samtalsforum_2009 order by Id desc"
'Set rs = myConn.execute(strSQL)
%>
<!--#INCLUDE FILE="inc_results.asp"-->
<%
End If
%>
</code>
Om följande kodblock finns med i filen får jag error 500, oavsett om querystring("base") innehåller "all", är tomt eller innehåller vad tusan som helst.
Om jag plockar bort kodblocket kan sidan visas.
Mina (i och för sig rätt begränsade) kunskaper säger mig att hela detta block (inklusive include file-raden) ska ignoreras om querystringen är tom. Har jag fel, eller är det nåt annat som är tokigt?
/PeterSv: Varför körs denna kod?
/JohanSv: Varför körs denna kod?
Grejen är denna: Jag har flyttat över ett antal filer från en gammal sajt till en ny, bland annat dessa filer. Allt funkade på den gamla sajten, skillnaden är att då körde jag mot en accessdatabas och nu försöker jag köra mot en mysqldatabas i stället. Så det enda jag har ändrat i koden är själva databaskopplingen, inga If- eller End If-satser har ändrats.
Alltså: Det enda som borde kunna fallera är databaskopplingarna, och dessa ligger ju innanför If-satserna. Som fungerade som de skulle innan jag kopierade över dem från den gamla sajten...
Knivigt!
/PeterSv:Varför körs denna kod?
Men återigen: om jag lyfter ut hela blocket laddar sidan utan problem.
Summa summarum: Sidan kraschar när jag har med den här snutten som ju borde ignoreras, åtminstone efter att jag plockat bort include-raden.
WTF?
/PeterSv: Varför körs denna kod?
/JohanSv:Varför körs denna kod?
Det märkliga är att bägge deklarationerna ligger i varsitt villkorsblock, varav antingen inget eller maximalt ett av dem ska köras. Men då har jag alltså lärt mig att variabeldeklarationer inte får göras mer än en gång på en sida, oavsett om koden körs eller inte.
Tack för hjälpen.
/PeterSv: Varför körs denna kod?
Börja med att sätta en Response.Write("halloj") följt av Response.End() (tror jag det heter) direkt i börjav av sidan. Om du inte ser texten på sidan så är det antagligen ett kopileringsfel. Då är det bästa att ta bort en kodsnutt i taget Tills det börjar fungera. Sen kan du ta bort delar av den tills du identifierat felet.
Om du får fram texten alloj så har du antagligen ett fel i körningen av koden så testa flytta den längre och längre fram tills du inte ser den mera.