PDA

Bekijk Volledige Versie : fout op ASP website na verhuizing



hires
02/08/10, 19:31
Hallo Allemaal,

Nadat ik een website heb verhuisd van IS (Win 2003) resellerpakket naar een andere server, eveneens Win 2003, krijg ik de volgende Microsoft Access Driver (*.mdb) foutmelding:

<% Set Link = Server.CreateObject("ADODB.Connection") Att=".\" Link.Open "DRIVER={Microsoft Access Driver (*.mdb)}; PWD=xxxxxxxx; DBQ=" & Server.MapPath(Att & "..\dbgraphics\data.mdb") ' PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:\Inetpub\vhosts\<domein.nl>\httpdocs\dbgraphics\data.mdb" ' DRIVER={Microsoft Access Driver (*.mdb)}; PWD=xxxxxxxx; DBQ=" & Server.MapPath(Att & "..\dbgraphics\data.mdb") %>

Ik ben geen Windows hosting kenner, maar ben na wat zoeken gekomen tot het aanmaken van een ODBC koppeling. Dat ging eerst mis, maar na het de juiste logingegevens gebruikt te hebben voor de database lukte het om die koppeling te leggen. Dit is overigens via Plesk gedaan. Het type koppeling is dan ook een Microsoft Access Driver koppeling.

De bovenstaande foutmelding verschijnt op de homepage; in de website zelf is nog een menu die verwijst naar de database; daar verschijnt een foutmelding:

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/winkel/left.asp, line 28

Ik gebruik dus Plesk, dit is ook een resellerpakket. Ik heb verschillende ASP versies geprobeerd (1 en 2.xxx) maar dat maakt geen verschil. Ik kan in Plesk ook maar twee versies kiezen. Verder is de data.mdb file gewoon aanwezig. Ik hbe nog gezocht naar een verouderde locatie en deze heb ik ook gevonden in een blanco.html bestand; daar stond nog een verwijzing naar een oude IIS server. Deze aangepast, maar dan krijg ik dus nog steeds de bovenstaande melding, maar dan met de andere locatie. Ik kan ook verder geen andere bestanden binden die ergens anders heen verwijzen.

Enig idee in welke richting ik het nu moet zoeken? Ik heb voornamelijk Linux en DirectAdmin klanten, en zit nu even met de handen in het haar.

Bij voorbaat dank.

Bart L
02/08/10, 19:42
Kan het zijn dat je vanuit een echte Windows omgeving bent verhuisd naar een Linux windows omgeving? Daarnaast Asp.net 1 of Asp.net 2 zal weinig veranderen aan een ASP Classic omgeving, waar jij het over lijkt te hebben.

Edit: Na het opnieuw lezen, je bent zelf van mening dat je van Windows 2003 naar Windows 2003 bent overgegaan, dus dan zal dat het probleem niet zijn.. Wat zegt je nieuwe hoster er van?

hires
02/08/10, 19:48
De nieuwe hoster is niet heel spraakzaam, maar wel begrijpelijk aangezien ik reseller ben en zelf voor support zou moeten zorgen.. Daar geef ik hem ook gelijk in. Maar de antwoorden die ik van hem heb gekregen hebben dus nog niet het gewenste resultaat gegeven.

martysmarty
02/08/10, 19:50
Wat staat er in lijn 28 van /winkel/left.asp?

hires
02/08/10, 19:54
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>xxxxxxxxx</title>

<link rel="stylesheet" title="style" href="../style.css" type="text/css">

</head>

<body bgcolor="********" leftmargin="0" topmargin="25" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">

<table width="76%" height="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="100%" valign="top" align="center">
<img src="http://www.webhostingtalk.nl/graphics/b-selecteer.gif" alt="selecteer categorie" width="60" height="26" hspace="0" vspace="10" border="0"><br clear="all">
<font class="standard">
<!--#include file="../db.asp"-->
<%
Id = Request("id")

Query = "SELECT * FROM cats ORDER BY catid"
Set Result = Link.Execute(Query) <--- REGEL 28

while not Result.EOF
if Result("catid") = ID then
Response.Write("<a onClick=""location.href='left.asp?id=" & Result("catid") & "';"" target=""body"" href=""body.asp?catid=" & Result("catid") & """ onMouseOver=""window.status='" & Result("catname") & "';return true;"" onMouseOut=""window.status='';return true;""><font class=""selected"">" & Result("catname") & "</font></a><br>")
else
Response.Write("<a onClick=""location.href='left.asp?id=" & Result("catid") & "';"" target=""body"" href=""body.asp?catid=" & Result("catid") & """ onMouseOver=""window.status='" & Result("catname") & "';return true;"" onMouseOut=""window.status='';return true;"">" & Result("catname") & "</a><br>")
end if
Result.MoveNext
wend
Link.Close()
%>
<br>

<div class="search" style="text-align: center;">
<form method="post" action="search.asp" target="body">
<input style="width: 80px;" type="text" id="searchbox" name="search" <% if SearchString <> "" then%>value="<%= SearchString %>"<% end if %>>
<input style="width: 36px;" type="submit" id="searchsubmit" value="Zoek">
</form>
</div>
</td>
</tr>
</table>


</body>
</html>


EDIT: voor het gemak even de hele left.asp file neergezet. Regel 28 bij het rode stukje.

hires
02/08/10, 20:06
Ter aanvulling:

Ik zie dat de index.html helemaal is opgebouwd uit verschillende frames; elke frame die de foutmelding geeft verwijst naar het bestand: blanco.html. Als ik in dit bestand kijk staat er het volgende:


<%
Set Link = Server.CreateObject("ADODB.Connection")
Att=".\"
Link.Open "DRIVER={Microsoft Access Driver (*.mdb)}; PWD=xxxxxxx; DBQ=" & Server.MapPath(Att & "..\dbgraphics\data.mdb")
' PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:\Inetpub\vhosts\<domein.nl>\httpdocs\dbgraphics\data.mdb"
' DRIVER={Microsoft Access Driver (*.mdb)}; PWD=xxxxxxx; DBQ=" & Server.MapPath(Att & "..\dbgraphics\data.mdb")
%>

Zou hier nog iets mee mis kunnen zijn? Password is goed, locatie van het data.mdb bestand is ook goed en het bestand staat er.

Bart L
02/08/10, 20:24
Maak hier eens het volledige path van? Server.MapPath(Att & "..\dbgraphics\data.mdb")

gjtje
02/08/10, 21:05
Je hebt het over een foutmelding en laat vervolgens een stuk code zien. Zie je die code als tekst in de browser? Dan is regel 28 ook logisch want Link is dan niks.

hires
02/08/10, 22:08
@bartL: volledig path van gemaakt, dus:


Server.MapPath(Att & "C:\Inetpub\vhosts\<domein.nl>\httpdocs\dbgraphics\data.mdb")
' PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:\Inetpub\vhosts\<domein.nl>\httpdocs\dbgraphics\data.mdb"
' DRIVER={Microsoft Access Driver (*.mdb)}; PWD=xxxxxxx; DBQ=" & Server.MapPath(Att & "C:\Inetpub\vhosts\<domein.nl>\httpdocs\dbgraphics\data.mdb")
%>

... dat is nu de inhoud van blanco.html. Ook geprobeerd om er .php van te maken; dan worden alle foutmeldingen in de frames 'page cannot be found 404'.

@gjtje: de foutmelding is niet de code die ik zie in de browser. De foutmeldingen die ik krijg staan in mijn eerste post en de code die ik in de aanvulling heb neergezet staat in blanco.html, aangezien vanuit de index.html steeds naar verwezen wordt. De index.html is opgebouwd uit een hele lading frames (set) waarbij in elke frame verwezen wordt naar blanco.html. En de foutmelding komt in elk frame op de homepage terug.

Hieronder zoals de index.html is opgebouwd:


<html>
<head>
<title>xxxxxxx</title>
<meta name="keywords" content="">
<meta name="description" content="xxxxx">
</head>

<!-- frames -->
<frameset cols="*,790,*" framespacing="0" frameborder="0" border="0">
<frameset rows="*,430,*" framespacing="0" frameborder="0" border="0">
<frame name="blanco" src="blanco.html" scrolling="no" marginheight=0 marginwidth=0 noresize border=0>
<frame name="blanco" src="blanco.html" scrolling="no" marginheight=0 marginwidth=0 noresize border=0>
<frame name="blanco" src="blanco.html" scrolling="no" marginheight=0 marginwidth=0 noresize border=0>
</frameset>

<frameset rows="*,430,*" framespacing="0" frameborder="0" border="0">
<frame name="blanco" src="blanco.html" scrolling="no" marginheight=0 marginwidth=0 noresize border=0>
<frame name="home" src="home.html" scrolling="no" marginheight=0 marginwidth=0 noresize border=0>
<frame name="blanco" src="blanco.html" scrolling="no" marginheight=0 marginwidth=0 noresize border=0>
</frameset>

<frameset rows="*,430,*" framespacing="0" frameborder="0" border="0">
<frame name="blanco" src="blanco.html" scrolling="no" marginheight=0 marginwidth=0 noresize border=0>
<frame name="blanco" src="blanco.html" scrolling="no" marginheight=0 marginwidth=0 noresize border=0>
<frame name="blanco" src="blanco.html" scrolling="no" marginheight=0 marginwidth=0 noresize border=0>
</frameset>
</frameset>

</html>

Kortom: een home.html inhet midden, met daar omheen allemaal frames die gevuld wordt met blanco.html. En de inhoud van blanco.html staat dus in mijn 'aanvulling'-post.

Ahmed
02/08/10, 22:20
Ahh dit is leuk (not). Hier heb ik 8 uur aan gezeten van 01:00 tot 09:00... kwam er op neer dat de map (hele pad) naar de mdb bestanden niet de juiste rechten hadden... Probeer eens IUSR, de server zelf of zelfs even tijdelijk Everyone

Ik heb toen zoveel dingen geprobeerd dat ik echt even niet meer weet wat precies de oplossing was. Morgen even navragen voor je, wellicht dat iemand anders het nog weet.

Cakkie
02/08/10, 23:07
<!--#include file="../db.asp"-->
<%
Id = Request("id")

Query = "SELECT * FROM cats ORDER BY catid"
Set Result = Link.Execute(Query) <-- REGEL 28
Ik zie een include staan van ../db.asp. My guess is dat in dat bestand de config van je database staat en dat daar je Link variabele ingesteld wordt. Kijk eens of daar alles correct in staat, en post de inhoud van dat bestand anders even.

Die blanco.html, wat daar de bedoeling van is weet ik ook niet, maar aangezien dat een html is zou die helemaal al niet geparsed mogen worden en dus ook geen foutmelding mogen geven.

hires
02/08/10, 23:33
@Cakkie: Hierbij ook de complete inhoud van het db.asp bestand. Ga even naar de echten kijken nog,zoals Ahmed aangeeft. Ook het nummer inmiddels gekregen van de programmeur; kijken of hij er nog wat van kan zeggen..


<html>
<head>
<title>xxxxxxxxxxx</title>
<script>

// (C) 2000 www.CodeLifter.com
// http://www.codelifter.com
// Free for all users, but leave in this header

if (parent.location.href == self.location.href){
// change the url below to the url of the
// frameset page...
window.location.href = 'index.html'
}

</script>
<link rel="stylesheet" title="style" href="style.css" type="text/css">
</head>

<body bgcolor="#7F7B88">

</body>
</html>

gjtje
03/08/10, 00:29
<% Set Link = Server.CreateObject("ADODB.Connection") Att=".\" Link.Open "DRIVER={Microsoft Access Driver (*.mdb)}; PWD=xxxxxxxx; DBQ=" & Server.MapPath(Att & "..\dbgraphics\data.mdb") ' PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:\Inetpub\vhosts\<domein.nl>\httpdocs\dbgr aphics\data.mdb" ' DRIVER={Microsoft Access Driver (*.mdb)}; PWD=xxxxxxxx; DBQ=" & Server.MapPath(Att & "..\dbgraphics\data.mdb") %>
Dit is geen foutmelding, dit is asp code, dat moet in een .asp bestand staan die of direct wordt aangeroepen of wordt geinclude vanuit een ander asp bestand.
.asp bestanden includen van uit een .html bestand kan (in IIS6) maar dan moet je wel de webserver configuratie eerst verbouwen.

Randy
03/08/10, 09:12
.asp bestanden includen van uit een .html bestand kan (in IIS6) maar dan moet je wel de webserver configuratie eerst verbouwen.

Daar noem je wat. Staat SSI (Servier Side Includes) wel aan op de server?

hires
03/08/10, 11:39
Stond niet aan! Aangezet voor .html en.htm files, maar het probleem blijft. Ik moet echt even met de programmeur praten; misschien dat hij het zo kan zeggen.

hires
09/08/10, 12:44
Nou, uiteindelijk is een partij er mee aan de slag gegaan en is de (verouderde!) website op bepaalde punten herschreven en lijkt het er op dat het meeste weer werkt. Ook waren er onderdelen van persists nodig zoals AspJpeg en AspUpload om alles weer goed te laten werken, maar het overgrote deel waar de problemen door veroorzaakt werden is herschreven. De oorspronkelijke partij die de site gemaakt had werkt niet meer met ASP en kon er eigenlijk niet veel meer mee. Anyway, het grootste gedeelte is nu opgelost.

Bedankt voor het meedenken!

dreamhost_nl
09/08/10, 13:06
en dat allemaal na een verhuizing van server... phoe... :thumbdown:

hires
09/08/10, 13:13
Daar sluit ik me bij aan... slechte zaak. Wij hadden dit ook beter moeten doen, ook al is het een 'apart geval' en een klant die we graag willen behouden.