2009-07-23 18 views
0

Ich muss in klassischen ASP für einen kleinen Job arbeiten. Ich versuche, die Website zum Testen auf meinem Computer laufen zu lassen. Ich verwende Windows 7 und IIS 7.klassische asp Verbindung zu Access-Datenbank, Datei nicht gefunden

Ich bekomme einen Fehler beim Ausführen von lokalen Host und beim Überprüfen der Protokolle erhalte ich den Fehler: 80004005 | Could_not_find_file_'c: \ inetpub \ wwwroot \ sc \ Website \ data \ si.mdb‘

Mein Code ist wie so

dim objConn 
dim objRS 
set objConn = Server.CreateObject("ADODB.Connection") 

objConn.Provider="Microsoft.Jet.OLEDB.4.0" 
Set objRS = Server.CreateObject("ADODB.Recordset") 

objConn.Open("c:/inetpub/wwwroot/sc/website/data/si.mdb") 

Dies ist der genaue Pfad zur Datei jedoch. Wer weiß, wie ich darauf zugreifen kann? Ist der Code falsch oder müssen IIS-Einstellungen vorgenommen werden?

Ich habe keine Version von Office installiert, würde das ein Problem verursachen?

Ich habe viele verschiedene Pfade und Provider-Einstellungen ausprobiert, aber keiner hat funktioniert.

bearbeiten Der Code, den ich eigentlich bin auf hatte keine Verbindungszeichenfolge Details im Code, aber die Person, die es nach wie vor auf thier Computer als Freund Setup-Umgebung den Test gearbeitet.

Er erinnert sich nicht, wie sein Freund Setup aber sagte: "Was ich erinnere ihn zu beobachten, er mit der Datenbank über Datenquellen (ODBC) verbunden, weil wie Sie in dem Code Theres keinen direkten Weg als seine Verwendung ' global etwas '(nicht den richtigen Begriff). "

+0

siehe meine neueste Bearbeitung über die named DSN. –

Antwort

1

Sie könnten versuchen, Process Monitor mit, genau zu sehen, welche Datei nicht in der gefunden oder es wird durch ein Berechtigungsproblem verursacht.

Auch wenn Vorwärts Schrägstriche anstelle von Backslashes ist in der Regel kein Problem, möchten Sie vielleicht versuchen, das zu ändern, falls es einen Unterschied macht.

Wenn Sie eine x64-Version von Windows verwenden, wird JET in diesem Modus nicht unterstützt, obwohl Sie es umgehen können, indem Sie configuring IIS to run x32 applications. Folgendes an der Befehlszeile Dazu laufen:

cscript.exe adsutil.vbs set W3SVC/AppPools/Enable32BitAppOnWin64 "true" 
iisreset 

Der zweite Befehl nicht erforderlich sein kann, aber ich vermute, dass Sie wahrscheinlich IIS neu starten müssen, bevor diese Änderung wirksam wird.

Es hört sich so an, als wäre der Code zuvor für die Verwendung eines globalen DSN eingestellt worden, daher fehlte ein Pfad in der Verbindungszeichenfolge, obwohl es trotzdem einige Verbindungsdetails (wie den DSN-Namen) geben sollte.

+0

Ich habe Prozessmonitor verwendet und es zeigt, dass die Datei nicht existiert. Auch wenn es klar ist. Es ist 32 Bit, das ich benutze. Ich kann nicht glauben, dass ich immer noch versuche 2-3 Stunden später zu lösen, was für eine Verschwendung eines Tages! Wie würde ich das ohne die Details der Verbindungszeichenfolge einrichten? Er hatte ursprünglich con.Open si.mdb "" "" – ddd

+0

Ich weiß, dass Sie überprüft haben ... aber ich denke, es ist ein Genehmigungs-Problem wie hier impliziert. Seth –

+0

Ich bin geneigt, Seth zuzustimmen, es klingt immer noch nach einem Berechtigungsproblem. Haben Sie versucht, die Datei umzubenennen und an einen anderen Ort zu verschieben? Ich würde empfehlen, es in die Wurzel zu setzen, z. c: \ db.mdb und versuchen, dort eine Verbindung herzustellen (den Prozessmonitor geöffnet zu lassen, um Dinge zu überwachen). – Mun

1

Dies kann ein Problem mit den Berechtigungen sein.

Eine einfache Möglichkeit, in der Datei.

+0

Ich bekomme immer noch genau den gleichen Fehler, auch nach dem Festlegen der vollen Berechtigungen für alle :( – ddd

0

Ihre Verbindungszeichenfolge sieht nicht richtig für mich ist voller Zugang zu allen geben für das Verzeichnis wäre zu überprüfen.

Sehen Sie, wenn this hilft.

EDIT: Haben Sie JET oledb Anbieter installiert?

EDIT2: Überprüfen Sie mit Hilfe dieser Frage das Vorhandensein von oledb Anbieter.
How to check if an OLEDB driver is installed on the system?

+0

Ich habe versucht, aber den gleichen Fehler. Obwohl, als ich die Arbeitsgruppe Einstellung versuchte ich ein anderes error saying | Could_not_find_installable_ISAM Aber ich glaube nicht, dass das die Einstellungen sind, die ich will. – ddd

+0

Wie würde ich überprüfen? Ich habe kein Office installiert, also nicht sicher, ob das das Problem ist. Ich habe VS2008 Pro obwohl so vielleicht kommt das mit Treiber? – ddd

+0

Sehen Sie, ob dies http://stackoverflow.com/questions/113860/how-to-check-if-anoledb-driver-is-installed-on-the-system hilft. – shahkalpesh

0

Ich antwortete eine potentially related question neulich. Führen Sie 64-Bit-Windows 7 aus? Wenn ja, gibt es absolut KEINE Jet-Unterstützung für x64-Betriebssysteme. In einer echten .NET-Anwendung könnten Sie die Anwendung einfach mit x86 als Ziel neu kompilieren. Aber in Ihrem Fall bin ich mir der Lösung nicht sicher.

Seth

+0

Ich bin auf 32-Bit, so dass es wahrscheinlich nicht ist – ddd

0

Warum Zeichenfolge sagen: "c: /inetpub/wwwroot/sc/website/data/si.mdb"

anstelle der normalen Windows-Pfad „c: \ inetpub \ wwwroot \ sc \ website \ data \ si.mdb "

Sie könnten auch zu Systemsteuerung-> Verwaltung-> Datenquelle (ODBC) gehen und einen neuen benannten DSN auf der Registerkarte System erstellen.Nennen Sie es zum Beispiel Si und sicherstellen, dass der Typ Zugang ist, geben ihm den richtigen Weg zum Zugang db und dann würden Sie den Code einfach sein:

dim objConn 
set objConn = Server.CreateObject("ADODB.Connection") 
objConn.Open("si") 
+0

Ich versuchte beide Möglichkeiten, Schrägstriche und Back Schrägstriche und das ist möglicherweise nur die letzte, die ich versuchte. – ddd

Verwandte Themen