IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

Echec de lecture d'un chemin


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Par défaut Echec de lecture d'un chemin
    Salut,
    Je tente désespérément de me connecter à une base de donées en locale située dans le répertoire de mon projet; ceci en construisant une chaine de connection par la méthode MapPath comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String chemin = Server.MapPath("DBMOZ.mdf");
    SqlConnection Cn = new SqlConnection(chemin );
    Cn.Open();
    C'est à ce niveau que tout merde un peut. cependant en remplaçant "chemin" par le chemin absolue, ça passe. Mais c'est ce que je veux éviter .
    Voici l'erreur retournée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    System.Data.SqlClient.SqlException: Échec d'une tentative d'attachement d'une base de données nommée automatiquement pour le fichier*C:\Documents and Settings\mpsawadogo\Mes documents\Visual Studio 2005\WebSites\TestService1\DBMOZ.mdf. Il existe une base de données du même nom ou le fichier spécifié ne peut être ouvert ou il se trouve sur un partage*UNC.
       à System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
       à System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
       à System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
       à System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
       à System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
       à System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
       à System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
       à System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
       à System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
       à System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
       à System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
       à System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
       à System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
       à System.Data.SqlClient.SqlConnection.Open()
       à MozService.MonPremierService.getPersonne() dans c:\Documents and Settings\mpsawadogo\Mes documents\Visual Studio 2005\WebSites\TestService1\App_Code\MonPremierService.cs:ligne 85

    NB: c'est un web service devant se connecter à la base de données en question.
    Et lorsque je teste ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SqlConnection Cn = new SqlConnection(Server.MapPath("DBMOZ.mdf"));
    Cn.Open();
    Voici l'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    System.ArgumentException: Le format de la chaîne d'initialisation n'est pas conforme à la spécification qui débute à l'index 0.
       à System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString, Int32 currentPosition, StringBuilder buffer, Boolean useOdbcRules, String& keyname, String& keyvalue)
       à System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey)
       à System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules)
       à System.Data.SqlClient.SqlConnectionString..ctor(String connectionString)
       à System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous)
       à System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(String connectionString, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions)
       à System.Data.SqlClient.SqlConnection.ConnectionString_Set(String value)
       à System.Data.SqlClient.SqlConnection.set_ConnectionString(String value)
       à System.Data.SqlClient.SqlConnection..ctor(String connectionString)
       à MozService.MonPremierService.getPersonne() dans c:\Documents and Settings\mpsawadogo\Mes documents\Visual Studio 2005\WebSites\TestService1\App_Code\MonPremierService.cs:ligne 83
    Need some help please !

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    SqlConnection ne prend pas en paramètre un nom de fichier mais une chaine de connexion...
    exemple ici :
    http://dotnet.developpez.com/articles/ado1/csharp/#L4
    Pour trouver la chaine de connexion exacte dont tu as besoin, je te conseille ce site :
    http://www.connectionstrings.com/

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Par défaut
    Oui, c'est vrai, tu as raison, c'était une omission de ma part dans le code, cependant lorsque j'ajoute la chaine de connection de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String chemin = Server.MapPath("DBMOZ.mdf");
    String connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename="+chemin+";Integrated Security=True;User Instance=True";
    j'ai toujours la même erreur !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Data.SqlClient.SqlException: Échec d'une tentative d'attachement d'une base de données nommée automatiquement pour le fichier*C:\Documents and Settings\mpsawadogo\Mes documents\Visual Studio 2005\WebSites\TestService1\DBMOZ.mdf. Il existe une base de données du même nom ou le fichier spécifié ne peut être ouvert ou il se trouve sur un partage*UNC.
    pourtant quand j'insère le chemin complet "c:\...DBMOZ.mdf" ça passe.
    Quelque chose ne va pas dans l'utilisation de MapPath?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Normalement MapPath prend en paramètre un chemin virtuel. Par exemple, si ton fichier mdf est dans le sous répertoire App_Data de ton appli, il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String chemin = Server.MapPath("~/App_Data/DBMOZ.mdf");
    Si tu ne précises pas un chemin absolu à partir de la racine de l'appli (~), je ne sais pas trop quel est le comportement prévu...

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Par défaut
    Et "tomlev" sauva saymon
    Merci ça marche !!! Surement un comportement imprévu comme tu l'as dis.
    Ce code passe également:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String chemin = Server.MapPath("App_Data/DBMOZ.mdf");
    Thanks!

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par saymon Voir le message
    Et "tomlev" sauva saymon
    Merci ça marche !!! Surement un comportement imprévu comme tu l'as dis.
    Ce code passe également:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String chemin = Server.MapPath("App_Data/DBMOZ.mdf");
    Thanks!
    En fait j'ai vérifié ce comportement depuis : si tu ne précises pas la racine, c'est considéré comme un chemin relatif par rapport à la page courante. Donc effectivement ce code va fonctionner si la page est à la racine du site, mais pas si elle est dans un sous-répertoire. Donc il vaut mieux toujours spécifier la racine "~"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 27/06/2016, 20h31
  2. [Hudson] Echec à la lecture des POMs
    Par benyahia4 dans le forum Intégration Continue
    Réponses: 1
    Dernier message: 04/01/2010, 11h17
  3. Chemin pour lecture dans un répertoire
    Par vva dans le forum ASP
    Réponses: 2
    Dernier message: 09/03/2007, 10h16
  4. Lecture Fichier chemin reseau + mot de passe
    Par jeanmy dans le forum Delphi
    Réponses: 4
    Dernier message: 18/10/2006, 13h58
  5. ORA-12570 : TNS : echec à la lecture du paquet
    Par tethrit dans le forum Oracle
    Réponses: 21
    Dernier message: 17/01/2005, 17h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo