om du skall redirecta användaren någonstans så måste response.buffer vara satt till true:
[red]<% @language=vbscript%>
<%
option explicit
[b]response.buffer = true[/b]
%>[/red]
18 svar · 375 visningar · startad av ChiefJoseph
Hej!
Jag har använt mig av en omröstning på min sajt och den har funkat utmärkt men har nu flyttat till en ny adress och får då detta felmeddelande, det finns stöd för ASP.
Response-objekt fel 'ASP 0156 : 80004005'
Fel på huvuden
/poll/poll.asp, rad 108
HTTP-huvudena har redan skrivits till klientläsaren. Ändringar till HTTP-huvudena måste göras innan sidinnehållet skrivs.
Koden är skriven av Åsa Gruvsjö, som för övrigt verkar väldigt duktig.
Här är poll.asp:
<!--#Include file="settings.asp"-->
<!--
************************************************
Omröstning v2
Åsa Gruvsjö © 2001
https://www.gruvsjo.com
Asa@gruvsjo.com
Fri att använda om ni låter copyrightkoden stå kvar!
************************************************
-->
<%
'############################################################################################################
'----------------------------------------------------SENASTE OMRÖSTNINGEN----------------------------------------------------------------------------------
'############################################################################################################
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db
Storlek = breddF/100
If Request.Querystring("do") = "" Then
Set RecSet = Conn.Execute("SELECT Top 1 * From fraga Order by PollId desc")%>
\<table border="0" cellpadding="1" cellspacing="1" align="center" width="\<%=Bredd%\>"\>
<%If RecSet.EOF Then%>
\<tr\>
\<td colspan="2"\>\<b\>Ingen fråga inlagd\</b\>\</td\>
\</tr\>
<%Else%>
<tr>
<td colspan="2"><b><%=RecSet("Fraga")%></b></td>
</tr>
\<%Set Svar = Conn.Execute("SELECT \* From svar Where pollID="& RecSet("PollId") & " Order By svarnr")
Set RS = Conn.Execute("SELECT sum(klick) As tot From svar Where pollID="& RecSet("PollId"))
totalt = RS("tot")
RS.Close
Set RS = nothing
If Svar.EOF Then%\>
\<tr\>
\<td colspan="2"\>\<b\>Inga frågor!\</b\>\</td\>
\</tr\>
<%End If
Do Until Svar.EOF
stat = Svar("klick")
If stat \<\> 0 Then
res = (stat/totalt)\* BreddF / Storlek
Else
res = "0"
End If
If Request.Cookies(sessionnamn1) = sessionnamn Then%\>
\<tr\>
\<td width="\<%=bredd%\>"\>\<%=Svar("svar")%\>\</td\>
\<td rowspan="2" width="\<%=breddR%\>" valign="bottom" align="right"\>(\<%For i=1 to Len(stat)%\>\<%=Mid(stat,i,1)%\>\<%Next%\>)\</td\>
\</tr\>
\<tr\>
\<td width="\<%=BreddF%\>" bgcolor="#d0d0d0" height="5"\>\<img src="poll/bilder/stapel.gif" width="\<%=Round(res,0)%\>%" height="5" border="1"\>\</td\>
\</tr\>
\<%Else%\>
\<tr\>
\<td width="\<%=bredd%\>"\>\<a href="\<%=sidan%\>?do=rosta&id=\<%=Svar("id")%\>&val=\<%=Svar("svarnr")%\>"\>\<%=Svar("svar")%\>\</a\>\</td\>
\<td rowspan="2" width="\<%=breddR%\>" valign="bottom" align="right"\>(\<%For i=1 to Len(stat)%\>\<%=Mid(stat,i,1)%\>\<%Next%\>)\</td\>
\</tr\>
\<tr\>
\<td width="\<%=BreddF%\>" bgcolor="#d0d0d0" height="5"\>\<img src="poll/bilder/stapel.gif" width="\<%=Round(res,0)%\>%" height="5" border="1"\>\</td\>
\</tr\>
\<%End If
Svar.MoveNext
Loop%\>
\<tr\>
\<td colspan="2"\>Antal röster: \<%For i=1 to Len(totalt)%\>\<%=Mid(totalt,i,1)%\>\<%Next%\>\</td\>
\</tr\>
<%Svar.Close
Set Svar = nothing
End If%>
\<tr\>
\<td colspan="2"\>\<hr\>\</td\>
\</tr\>
\<tr\>
\<td colspan="2"\>\<a href="\<%=sidan%\>?do=gamla"\>\</a\> \<a href="admin3.asp" target="\_blank"\>Admin\</a\>\</td\>
\</tr\>
</table>
<%End If
'############################################################################################################
'----------------------------------------------------KOLLAR OM MAN RÖSTAT-----------------------------------------------------------------------------------
'############################################################################################################
If Request.Querystring("do") = "rosta" Then
If Request.Cookies(sessionnamn1) = sessionnamn then
Response.Redirect sidan
Else
Response.Redirect sidan & "?do=spara&id=" & Request.Querystring("id") & "&val=" & Request.QueryString("val")
End If
End If
'############################################################################################################
'----------------------------------------------------SPARAR RÖSTEN---------------------------------------------------------------------------------------------
'############################################################################################################
If Request.Querystring("do") = "spara" Then
Set RecSet = Conn.Execute("Select * From svar Where id=" & Request.QueryString("id") & " And svarnr=" & Request.QueryString("val"))
Conn.Execute("Update svar Set klick=klick+1 Where id=" & Request.QueryString("id") & " And svarnr=" & Request.QueryString("val"))
Response.Cookies(sessionnamn1) = sessionnamn
Response.Cookies(sessionnamn1).Expires = date + 1
Response.Redirect sidan & "?id=" & Request.QueryString("id")
End If
'############################################################################################################
'----------------------------------------------------ALLA OMRÖSTNINGAR---------------------------------------------------------------------------------------
'############################################################################################################
If Request.Querystring("do") = "gamla" Then
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("db/poll.mdb")
SQL = "Select PollId, Fraga From fraga Order By PollId desc"
Set RecSet = Conn.Execute(SQL)
Do Until RecSet.EOF
PollId = RecSet("PollID")
Fraga = RecSet("Fraga")%>
<table width="<%=Bredd%>" cellspacing="1" cellpadding="1" align="center" border="0">
<tr>
<td colspan="2"><b><%=Fraga%></b></td>
</tr>
<%Set RS = Conn.Execute("SELECT sum(klick) As tot From svar Where pollID="& PollId)
roster = RS("tot")
RS.Close
Set RS = nothing
Set RS = Conn.Execute("Select * From svar Where PollID = " & PollId &" Order By svarnr")
Do Until RS.EOF
stat = RS("klick")
If stat <> 0 Then
res = (stat/roster) * BreddF / Storlek
Else
res = "0"
End If%>
<tr>
<td width="<%=bredd%>"><%=RS("svar")%></td>
<td rowspan="2" width="<%=breddR%>" valign="bottom" align="right">(<%For i=1 to Len(stat)%><%=Mid(stat,i,1)%><%Next%>)</td>
</tr>
<tr>
<td width="<%=BreddF%>" bgcolor="#d0d0d0" height="5"><img src="poll/bilder/stapel.gif" width="<%=Round(res,0)%>%" height="5" border="1"></td>
</tr>
<%RS.MoveNext
Loop
Set RS = nothing%>
<tr>
<td colspan="2">Antal röster: <%For i=1 to Len(roster)%><%=Mid(roster,i,1)%><%Next%></td>
</tr>
<tr>
<td colspan="2"><hr></td>
</tr>
<%RecSet.MoveNext
Loop
Set RecSet = nothing%>
\<tr\>
\<td colspan="2"\>\<b\>«\</b\> \<a href="\<%=sidan%\>"\>Tillbaka\</a\>\</td\>
</tr>
</table>
<%End If
Conn.Close
Set Conn = nothing%>
om du skall redirecta användaren någonstans så måste response.buffer vara satt till true:
[red]<% @language=vbscript%>
<%
option explicit
[b]response.buffer = true[/b]
%>[/red]
Har provat detta!
Fick rekommendationen av Åsa G. att göra detta men inte heller det funkade. Den kodbiten i toppen är bara tillfälligtvis borta.
Tack för ditt svar!!
Jag har en liten teori!!
Jag kan ej ASP men förstår en del av logiken.
Kan man på servern ställa in om man skall använda cookies eller ej??? Att det kan ha med detta att göra?
Har du inte ändrat någon inställning för att avaktivera cookies (vilket jag aldrig har hört talas om på serversidan) så funkar det kanon som standard. Så det är nog inte en del av ditt problem.
Det är väl den här raden det handlar om va?
If Request.Cookies(sessionnamn1) = sessionnamn then
Ja, jag vet faktiskt inte.....faktum är att allt jag gjort är att flytta det från en server till en annan. Jag tror att operativet på servern är NT. Alltså ej 2000.
Jag är fortfarande inne på att det har med response.buffer att göra. Om jag inte misstar mig helt har NT4 response.buffer satt till false som default och 2000 i sin tur buffern till true.
Du är säker på att du inkluderar sidan med response.buffer på den sidan som krånglar?
LR^evil.sid skrev:
Jag är fortfarande inne på att det har med response.buffer att göra. Om jag inte misstar mig helt har NT4 response.buffer satt till false som default och 2000 i sin tur buffern till true.
Du är säker på att du inkluderar sidan med response.buffer på den sidan som krånglar?
Jag är mer eller mindre helt säker på att LR^evil.sid har rätt. Response.buffer = True skall med, men det skall absolut överst på sidan.
Och det är precis som LR^evil.sid säger också att buffer är default false på IIS4 , men true på IIS 5. Det kanske är lite repetition, men jag vill bara understryka att mina erfarenheter säger mig att det är det som är problemet. Been there, done that, liksom.
Mvh
Tack för att ni svarar och intresserar er.
Jag har provat med både och men har kommit framtill att det är på servern problemet ligger.
Rättigheter och ODBC-kopplingar som inte är rätt.....tror jag alltså.
Kan det stämma???
ChiefJoseph skrev:
Rättigheter och ODBC-kopplingar som inte är rätt.....tror jag alltså.
Kan det stämma???
Nej, det tror jag inte. Hur ser hela sidan ut, inklusive response.buffer=true?
mvh,
Jag har för mig att det där felet (80004005) var uppe för bara några trådar sedan och det var om databaskopplingen, som inte var riktigt som den skulle. Problemet då var att ett password i connectionstring:en inte fungerade.
Om det hjälper dig något vet jag inte, men man kan ju hoppas...
Jag kan ju passa på att nämna att jag har fler asp-script som ej funkar. Statistik, uppdateringsbara nyheter, länkarkiv....samtliga vill ej fungera.
Det är precis samma sida som ovan med enda skillnaden att detta nu ligger i toppen.
<%Response.Buffer=True%>
Är det samma felmeddelande? Spontant tycker jag att detta borde funka:
<%@Language=VBScript%><%Response.buffer=true%>
<!--#Include file="settings.asp"-->
<!--
************************************************
Omröstning v2
Åsa Gruvsjö © 2001
[url]www.gruvsjo.com[/url]
[email]Asa@gruvsjo.com[/email]
Fri att använda om ni låter copyrightkoden stå kvar!
************************************************
-->
<%
'###########################################################
#################################################
'----------------------------------------------------SENASTE OMRÖSTNINGEN----------------------------------------------------------------------------------
'###########################################################
#################################################
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db
Storlek = breddF/100
If Request.Querystring("do") = "" Then
Set RecSet = Conn.Execute("SELECT Top 1 * From fraga Order by PollId desc")%>
<table border="0" cellpadding="1" cellspacing="1" align="center" width="<%=Bredd%>">
<%If RecSet.EOF Then%>
<tr>
<td colspan="2"><b>Ingen fråga inlagd</b></td>
</tr>
<%Else%>
<tr>
<td colspan="2"><b><%=RecSet("Fraga")%></b></td>
</tr>
<%Set Svar = Conn.Execute("SELECT * From svar Where pollID="& RecSet("PollId") & " Order By svarnr")
Set RS = Conn.Execute("SELECT sum(klick) As tot From svar Where pollID="& RecSet("PollId"))
totalt = RS("tot")
RS.Close
Set RS = nothing
If Svar.EOF Then%>
<tr>
<td colspan="2"><b>Inga frågor!</b></td>
</tr>
<%End If
Do Until Svar.EOF
stat = Svar("klick")
If stat <> 0 Then
res = (stat/totalt)* BreddF / Storlek
Else
res = "0"
End If
If Request.Cookies(sessionnamn1) = sessionnamn Then%>
<tr>
<td width="<%=bredd%>"><%=Svar("svar")%></td>
<td rowspan="2" width="<%=breddR%>" valign="bottom" align="right">(<%For i=1 to Len(stat)%><%=Mid(stat,i,1)%><%Next%> )</td>
</tr>
<tr>
<td width="<%=BreddF%>" bgcolor="#d0d0d0" height="5"><img src="poll/bilder/stapel.gif" width="<%=Round(res,0)%>%" height="5" border="1"></td>
</tr>
<%Else%>
<tr>
<td width="<%=bredd%>"><a href="<%=sidan%>?do=rosta&id=<%=Svar("id")%>&val=<%=Svar("svarnr")%>"><%=Svar("svar")%></a></td>
<td rowspan="2" width="<%=breddR%>" valign="bottom" align="right">(<%For i=1 to Len(stat)%><%=Mid(stat,i,1)%><%Next%> )</td>
</tr>
<tr>
<td width="<%=BreddF%>" bgcolor="#d0d0d0" height="5"><img src="poll/bilder/stapel.gif" width="<%=Round(res,0)%>%" height="5" border="1"></td>
</tr>
<%End If
Svar.MoveNext
Loop%>
<tr>
<td colspan="2">Antal röster: <%For i=1 to Len(totalt)%><%=Mid(totalt,i,1)%><%Next%></td>
</tr>
<%Svar.Close
Set Svar = nothing
End If%>
<tr>
<td colspan="2"><hr></td>
</tr>
<tr>
<td colspan="2"><a href="<%=sidan%>?do=gamla"></a> <a href="admin3.asp" target="_blank">Admin</a></td>
</tr>
</table>
<%End If
'###########################################################
#################################################
'----------------------------------------------------KOLLAR OM MAN RÖSTAT-----------------------------------------------------------------------------------
'###########################################################
#################################################
If Request.Querystring("do") = "rosta" Then
If Request.Cookies(sessionnamn1) = sessionnamn then
Response.Redirect sidan
Else
Response.Redirect sidan & "?do=spara&id=" & Request.Querystring("id") & "&val=" & Request.QueryString("val")
End If
End If
'###########################################################
#################################################
'----------------------------------------------------SPARAR RÖSTEN---------------------------------------------------------------------------------------------
'###########################################################
#################################################
If Request.Querystring("do") = "spara" Then
Set RecSet = Conn.Execute("Select * From svar Where id=" & Request.QueryString("id") & " And svarnr=" & Request.QueryString("val"))
Conn.Execute("Update svar Set klick=klick+1 Where id=" & Request.QueryString("id") & " And svarnr=" & Request.QueryString("val"))
Response.Cookies(sessionnamn1) = sessionnamn
Response.Cookies(sessionnamn1).Expires = date + 1
Response.Redirect sidan & "?id=" & Request.QueryString("id")
End If
'###########################################################
#################################################
'----------------------------------------------------ALLA OMRÖSTNINGAR---------------------------------------------------------------------------------------
'###########################################################
#################################################
If Request.Querystring("do") = "gamla" Then
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("db/poll.mdb")
SQL = "Select PollId, Fraga From fraga Order By PollId desc"
Set RecSet = Conn.Execute(SQL)
Do Until RecSet.EOF
PollId = RecSet("PollID")
Fraga = RecSet("Fraga")%>
<table width="<%=Bredd%>" cellspacing="1" cellpadding="1" align="center" border="0">
<tr>
<td colspan="2"><b><%=Fraga%></b></td>
</tr>
<%Set RS = Conn.Execute("SELECT sum(klick) As tot From svar Where pollID="& PollId)
roster = RS("tot")
RS.Close
Set RS = nothing
Set RS = Conn.Execute("Select * From svar Where PollID = " & PollId &" Order By svarnr")
Do Until RS.EOF
stat = RS("klick")
If stat <> 0 Then
res = (stat/roster) * BreddF / Storlek
Else
res = "0"
End If%>
<tr>
<td width="<%=bredd%>"><%=RS("svar")%></td>
<td rowspan="2" width="<%=breddR%>" valign="bottom" align="right">(<%For i=1 to Len(stat)%><%=Mid(stat,i,1)%><%Next%> )</td>
</tr>
<tr>
<td width="<%=BreddF%>" bgcolor="#d0d0d0" height="5"><img src="poll/bilder/stapel.gif" width="<%=Round(res,0)%>%" height="5" border="1"></td>
</tr>
<%RS.MoveNext
Loop
Set RS = nothing%>
<tr>
<td colspan="2">Antal röster: <%For i=1 to Len(roster)%><%=Mid(roster,i,1)%><%Next%></td>
</tr>
<tr>
<td colspan="2"><hr></td>
</tr>
<%RecSet.MoveNext
Loop
Set RecSet = nothing%>
<tr>
<td colspan="2"><b>«</b> <a href="<%=sidan%>">Tillbaka</a></td>
</tr>
</table>
<%End If
Conn.Close
Set Conn = nothing%>
Mvh,
Active Server Pages fel 'ASP 0140'
Ogiltig kommandoordning
/poll/poll.asp, rad 1
Kommandot @Language måste vara det första kommandot på Active Server-sidan.
Får detta felmeddelande när jag försöker köra sidan med poll.
Inkluderas denna sida i en annan sida?
I så fall måste buffer-instruktionen vara överst i den sidan, och då får du ta bort <%@Language=VBScript%><%Response.buffer=true%> ur koden på den här sidan igen.
mvh,
Ja det gör den.
Om jag tar bort @lang....så är vi väl tillbaka till samma som förut??
Ja, men du måste lägga Response.buffer = true i den sida som inkluderar denna. Överst efter <%@-kommando.
mvh
Tack nu funkar det förutom att det inte går att uppdatera databasen.
En fråga: På en NT server: IIS: Skall jag gå in på webbdelning och dela ut databasen till alla användare? Och vilka rättigheter är det som gäller.....kör, skriv, läs..os.v.
tACKSAM FÖR SVAR