Question

Je ne parviens pas à accéder à une base de données hébergée sur un serveur distant.

J'ai une page Web ASP.NET 2.0 qui tente de se connecter à une base de données.
La base de données est accessible via un dossier virtuel (que j'ai configuré dans IIS).
Le dossier virtuel pointe sur un partage distant qui contient la base de données.

Le dossier virtuel (dans le répertoire racine des applications Web) pointe vers un partage sur un serveur distant via un chemin UNC:

\\databaseServerName\databaseFolder$\ 

Les autorisations "en lecture" et "parcourir" du dossier virtuel sont définies sur "true".

Je stocke la chaîne de connexion dans la section "appSettings" du fichier web.config:

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

L'objet de connexion est declard sur ma page .aspx:

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

Voici le code qui tente d'utiliser l'objet de connexion:

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

Lorsque j'exécute le code ci-dessus, l'erreur suivante s'affiche (sur cette ligne du code 'objConnVirtual.Open ()':
Détails de l'exception: System.Data.OleDb.OleDbException: nom de fichier non valide.

J'ai vérifié le nom de la base de données et il est correct (même copié / collé pour en être sûr)

Si je mets la section "Source de données" de la chaîne de connexion dans la barre d'adresse de mon navigateur, je peux voir le contenu du partage sur le serveur distant.

Je ne sais pas s'il s'agit d'un problème d'autorisations ou de code.
J'ai googlé la merde mais je n'ai pas trouvé de solution.

Toute aide est très appréciée.

Était-ce utile?

La solution 5

MISE À JOUR

Tout d’abord, merci à toutes les personnes qui ont soumis des réponses.

Toutefois, nous n'avons pas utilisé la méthode "se connecter à une base de données distante via un dossier virtuel", car la complexité des autorisations nécessaires pour que cela fonctionne nous causait plus de problèmes qu'elle n'en valait la peine. Nous avons réinséré le chemin UNC dans la chaîne de connexion, ce qui n'est peut-être pas le meilleur moyen de le faire, mais qui fonctionne pour nous.

Autres conseils

Lorsque vous accédez à une base de données Access MDB distante, vous devez spécifier un chemin UNC tel que \\ remoteMachine \ Share \ test.mdb.

Assurez-vous que l'identité de votre pool d'applications dispose des autorisations appropriées pour vous connecter au partage distant. Par défaut, sur IIS 6, vous travaillez avec le compte de service réseau, qui n'est pas autorisé par défaut à accéder à un partage distant.

La meilleure solution consiste à laisser l'AppPool s'exécuter avec un utilisateur de service dédié.

Quel est le compte utilisé sur votre serveur lorsque votre application Web essaie de lire le fichier db? Quel que soit ce compte d'utilisateur, il doit disposer d'autorisations pour lire ce dossier / fichier. Dans IIS6, vous pouvez configurer le dossier virtuel pour utiliser n'importe quel compte d'utilisateur. Dans l'onglet Sécurité du répertoire, vous trouverez un bouton Modifier sous Authentification et contrôle d'accès.

Il semble probable que votre message d'erreur soit simplement un message d'erreur générique, et que le problème des autorisations est votre véritable problème.

assurez-vous que les deux serveurs ont un accès interne l'un à l'autre et spécifiez également l'adresse ip & amp; port du serveur de base de données dans votre chaîne de connexion.

Mettre à jour

Je dois également mentionner qu'il fonctionne sur ma machine ( mais pas une fois chargé dans la boîte de production) si je déclare la chaîne de connexion dans la section 'appSettings' du web.config comme ceci:

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

Cela me porte à penser qu'il pourrait être problématique d'utiliser des informations d'identification de domaine autres que le compte IUSER local.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top