ODBC-Zugriff aus ASP.NET-Seite über IIS



  • Hallo zusammen!

    Ich habe eine .NET-Objekt in C++ geschrieben, welches per ODBC auf eine Datenbank zugreifen soll. Wenn ich dieses .NET-Objekt nun in einer .aspx-Seite benutze, und diese .aspx-Seite im Visual Studio (C++.NET, Version 2003) öffne, dann funktioniert alles wie gewünscht. D. h. in der Entwurfs-Ansicht ist das erwartete Ergebnis zu sehen, welches einen erfolgreichen ODBC-Zugriff auf die Datenbank voraussetzt.

    Wenn ich die .aspx-Seite über Microsoft IIS anzeige, dann funktioniert der ODBC-Zugriff nicht mehr. Statt dessen bekomme ich die Meldung

    "[Microsoft][ODBC Microsoft Access Driver] Das Microsoft Jet-Datenbankmodul kann die Datei '(unbekannt)' nicht öffnen. Sie ist bereits von einem anderen Benutzer exklusiv geöffnet, oder Sie benötigen eine Berechtigung, um die Daten lesen zu können."

    Hat jemand eine Idee, wieso der Zugriff vom Visual Studio aus funktioniert, und aus dem IIS heraus aber nicht?

    Sind für den ODBC-Zugriff auf ACCESS vielleicht irgendwelche DLLs notwendig, die aus der IIS-Umgebung heraus nicht gefunden werden? In diesem Fall würde ich allerdings eine andere Fehlermeldung (oder vielmehr einen Programmabsturz) erwarten.

    Viele Grüße
    Th.



  • also 2 dinge die mir spontan einfallen:

    1. wahrscheinlich greift der iis mit einer anderen benutzerkennung auf die
      datei zu und dieser benutzer besitzt keine ausreichende berechtigungen.

    2. benutzt du zum zugriff auf die datei auch server.mappath(accessdatei)?

    ansonsten zeig mal n bissl code 🙂



  • Zu 1.: Würde es daran liegen, dann sollte doch in der Fehlermeldung der Name der entsprechenden Datei erscheinen, und nicht '(unbekannt)'.

    Zu 2.: Viel Code gibt es nicht zu sehen:

    int c = 1;
    	char *arg = "test.dll";
    	QApplication a(c, &arg, false);
    	QSqlDatabase *database = QSqlDatabase::addDatabase("QODBC3");
    	database->setDatabaseName("IGeL");
    	if (database->open())
    	{
    		QSqlQuery query("SELECT ...");
    		if (query.next())
    			...
    	}
    

    Sowol im Visual Studio als auch mit dem Microsoft ASP:NET Web Matrix Server gibt es damit keine Probleme, der Zugriff auf die Datenbank funktioniert und liefert das erwartete Ergebnis.

    Die einzigen NET-Objekte, die ich in dem kleinen Testprogramm benutze, sind
    System::Web::UI::Control und System::Web::UI::WebControls::Literal.



  • Hatte das gleiche Problem, konnte es mit der Rechteverteilung lösen. Die DB mus vollzugriff für jeden haben.


Anmelden zum Antworten