Frage

ich habe ein Problem bekommt Zugriff auf eine Datenbank, die auf einem Remote-Server lebt.

Ich habe eine ASP.NET 2.0 Webseite, die mit einer Datenbank zu verbinden versucht.
Die Datenbank wird über einen virtuellen Ordner (die ich in IIS einrichten) abgerufen.
Die virtuellen Ordner Punkte auf einer Remote-Freigabe, die die Datenbank enthält.

Der virtuelle Ordner (im Web-Anwendungen Root-Verzeichnis) auf einem Remote-Server über einen UNC-Pfad zu einem Aktie Hinweis:

\\databaseServerName\databaseFolder$\ 

Der virtuelle Ordner hat ‚lesen‘ und Berechtigungen auf ‚true‘ ‚blättern‘.

Ich speichere die Verbindungszeichenfolge in dem Abschnitt der web.config 'appSettings':

<add key="conStrVirtual" value="Provider=Microsoft.Jet.OleDb.4.0;Data Source=http://webAppServerName/virtualFolderName/databaseName.MDB;Jet OLEDB:Database Password=dumbPassword;"/>

Das Verbindungsobjekt ist declard auf meiner ASPX-Seite:

Dim objConnVirtual As New OleDbConnection(ConfigurationManager.AppSettings("conStrVirtual"))

Hier ist der Code, der das Verbindungsobjekt zu verwenden versucht:

Public Sub Test()
    If objConnVirtual.State <> ConnectionState.Open Then
        objConnVirtual.Open()
    End If
    Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM TableName", objConnVirtual)
    objDR = cmd.ExecuteReader()
    If objDR.Read() Then
        response.write("Shazaam! Data shows up here")
    End If
    objDR.Close()
    objConnVirtual.Close()
End Sub

Wenn ich führen Sie den obigen Code ich folgende Fehlermeldung erhalten (in dieser Zeile des Codes ‚objConnVirtual.Open ()‘:
Ausnahmedetails: System.Data.OleDb.OleDbException. Nicht ein gültiger Dateiname

Ich habe den Namen der Datenbank geprüft, und es ist richtig (auch Kopieren / Einfügen es sicher machen)

Wenn ich die ‚Datenquelle‘ des Verbindungszeichenfolge in die Adressleiste des Browsers setzen kann ich erfolgreich den Inhalt der Freigabe auf dem Remote-Server sehen.

Nicht sicher, ob dies ein Problem mit Berechtigungen oder mit dem Code ist.
Ich habe den Mist aus diesem gegoogelt aber nicht in der Lage, eine Lösung zu finden.

Jede Hilfe ist sehr geschätzt.

War es hilfreich?

Lösung 5

UPDATE

Als erstes, vielen Dank an alle, die Antworten vorgelegt.

Doch am Ende haben wir nicht mit der Methode ‚über virtuelle Ordner Remote-Datenbank verbinden‘, weil die Komplexität der Berechtigungen benötigt diese zur Arbeit kommen war uns mehr Probleme verursacht als es wert war. Wir setzten den UNC-Pfad zurück in die Verbindungszeichenfolge, die nicht der beste Weg, dies zu tun, aber arbeiten für uns.

Andere Tipps

Wenn Sie eine Remote-Access MDB-Datenbank zugreifen, müssen Sie einen UNC-Pfad angeben, wie \\ remoteMachine \ Share \ test.mdb.

Stellen Sie sicher, Ihre Anwendungspoolidentität, die richtigen Berechtigungen zu der Remote-Freigabe zu verbinden. Standardmäßig auf IIS 6 Sie mit dem Netzwerkdienstkonto arbeiten, die standardmäßig nicht erlaubt, um eine Remote-Freigabe zugreifen.

Der beste Weg ist die AppPool läuft mit einem dedizierten Service-Benutzern zu lassen.

Was ist das Konto auf dem Server verwendet werden, wenn Ihre Webanwendung versucht, die db-Datei zu lesen? Was auch immer dieses Benutzerkonto ist, muss sie Berechtigungen haben diesen Ordner / Datei zu lesen. In IIS6 können Sie die virtuellen Ordner konfigurieren jedes Benutzerkonto zu verwenden, ... auf der Registerkarte Sicherheit gibt es eine Schaltfläche Bearbeiten unter Authentifizierung und Zugriffssteuerung.

Es scheint wahrscheinlich, dass Ihre Fehlermeldung nur eine allgemeine Fehlermeldung, und das Berechtigungsproblem ist Ihr eigentliches Problem.

sicherstellen, dass die beiden Server haben die internen Zugriff auf sie und auch die IP-Port von db-Server in Ihrer Verbindungszeichenfolge angeben.

Aktualisieren

Ich sollte auch erwähnen, dass es auf meinem Rechner arbeitet ( aber nicht einmal auf die Produktion Box geladen), wenn ich die Verbindungszeichenfolge in den ‚appSettings‘ der web.config wie folgt erklären:

<add key="conStrVirtual" value="Provider=Microsoft.Jet.OleDb.4.0;Data Source=\\databaseServerName\databaseFolder$\databaseName.MDB;Jet OLEDB:Database Password=dumbPassword;"/>

Dies führt mich zu denken, dass es ein Problem sein könnte, mit benötigen Domänenanmeldeinformationen außer dem lokale IUSER Konto zu verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top