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

ASP.NET Discussion :

Impossible de se connecter à la base SQL ASPNETDB.MDF générée par Web Developper


Sujet :

ASP.NET

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Par défaut Impossible de se connecter à la base SQL ASPNETDB.MDF générée par Web Developper
    Bonjour,

    J'ai développé un site web à l'aide de Visual Web Developer 2008 Express qui se connecte à une base Access 2007 (.accdb). Ce site a été hébergé d'abord sur un serveur Windows 2003 (édition Web), puis sur un serveur Windows 2008 R2 SP1 (édition Web) et fonctionnait sans problème.

    J'ai ajouté une interface de gestion type back office pour mettre à jour la base Access en ligne, mais cette fois-ci en utilisant Visual Web Developer 2010 Express (qui m'a proposé une bascule vers la Framework 4.0 que j'ai effectuée). Pour gérer les accès sécurisés à cette zone, j'ai utilisé l'outil Administration de site Web, onglet Sécurité (Utilisateurs, Roles, Règles d'Accès). Cette manipulation a créé la base SQL ASPNETDB.MDF (gérée par SQL Express 2008 fournit avec Visual Web Developper).

    En utilisant le serveur de développement de Visual Web Developer 2010, tout est fonctionnel : accès à la base Access pour l'affichage des pages et accès au back office via les outils de connexion liés à la base SQL.

    Par contre, sur le serveur 2008, les chose ne se passent pas aussi bien. Si l'accès aux pages connectées à la base Access est toujours fonctionnel, cela n'est pas vrai de l'accès à l'espace sécurisé lié à la base SQL ASPNETDB.MDF.

    Dès que je tente de me loguer, je reçois le message suivant :

    Échec de la création d'une instance utilisateur SQL Server en raison d'une défaillance d'extraction du chemin d'accès aux données de l'application locale de l'utilisateur. Vérifiez que l'utilisateur a un profil d'utilisateur local sur l'ordinateur. Fermeture de la connexion.

    Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.Data.SqlClient.SqlException: Échec de la création d'une instance utilisateur SQL Server en raison d'une défaillance d'extraction du chemin d'accès aux données de l'application locale de l'utilisateur. Vérifiez que l'utilisateur a un profil d'utilisateur local sur l'ordinateur. Fermeture de la connexion.
    D'après le post http://social.msdn.microsoft.com/For...e-836530490d97, il semblerait que ce soit un problème de droits sur la base SQL. Mais même en mettant "Tout le monde" avec un "Controle total" sur la base, le problème persiste.

    Voici la section concernée dans le web.config :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <connectionStrings>
    <remove name="LocalSqlServer" />
    <add name="LocalSqlServer" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Aspnetdb.mdf;Integrated Security=True; User Instance=True;Initial Catalog=ASPNETDB" providerName="System.Data.SqlClient"/>
    <!--<add name="LocalSqlServer" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Aspnetdb.mdf;Integrated Security=SSPI; User Instance=True;Initial Catalog=ASPNETDB" providerName="System.Data.SqlClient"/>-->
    <add name="CSBaseAppart" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\appartb2.accdb" providerName="System.Data.OleDb"/>
    </connectionStrings>
    J'ai essayé avec les 2 syntaxes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Integrated Security=True
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Integrated Security=SSPI
    Mais rien n'y fait.

    J'ai une URL de test qui permet de visualiser le problème :

    Affichage d'une page reliée à la base Access : http://www.soda-story.com/Affichage/dispo-fr.aspx?rue=E
    Url de connexion au back office (qui plante) : http://www.soda-story.com/login.aspx...n%2fchoix.aspx
    user : david - mdp : aze@123
    J'avoue que j'y perds mon latin. J'ai parcouru un paquet de post en anglais et français mais aucune des manips proposées ne fonctionne.

    Pour compléter ma démarche, j'ai installé Visual Web Developer 2010 Express sur le serveur Windows 2008 et j'ai testé le site avec le serveur de développement intégré : tout est fonctionnel !!

    j'ai lu sur un forum anglais qu'il fallait dans les paramètres avancés du pool d'application associé au site, mettre Charger le profil utilisateur à True dans Modèle de processus, ce que j'ai fait.

    Résultat : disparition du message d'erreur évoqué ci-dessus mais toujours impossible de se connecter. Le message d'erreur est renvoyé cette fois-ci part le contrôle login posé sur la page aspx :
    Votre tentative de connexion a échoué. Réessayez.
    Tout fonctionne toujours bien avec le serveur de développement intégré dans Visual Web Developer 2010 Express...

    C'est incompréhensible...

    J'espère avoir donné suffisamment de détails pour comprendre mon problème.

    Merci d'avance pour tout aide ! :-)

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 128
    Par défaut
    bonjour!
    sous le server 2008, tu travaille sous le iis 7 n'est ce pas????
    est ce que t'as sql server installé!?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Par défaut
    Oui c'est bel et bien IIS 7.
    Lors de l'installation de Visual Web Developper, SQL Server Express 2008 a automatiquement été installé.

  4. #4
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Le message d'erreur que tu donnes dans ton post n'est pas très parlant.
    Essaye de récupérer l'exception levée quand la connexion échoue et poste là ici, elle sera surement plus parlante.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Par défaut
    Dingue, en remettant la valeur à False (paramètres avancés du pool d'application associé au site, Charger le profil utilisateur dans Modèle de processus), j'obtiens :

    Échec de la validation MAC Viewstate. Si cette application est hébergée par une batterie de serveurs ou un cluster, assurez-vous que la configuration <machineKey> spécifie le même validationKey et le même algorithme de validation. AutoGenerate ne peut pas être utilisée dans un cluster.
    Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.Web.HttpException: Échec de la validation MAC Viewstate. Si cette application est hébergée par une batterie de serveurs ou un cluster, assurez-vous que la configuration <machineKey> spécifie le même validationKey et le même algorithme de validation. AutoGenerate ne peut pas être utilisée dans un cluster.

    Erreur source:

    Le code source qui a généré cette exception non gérée ne peut être consulté qu'une fois compilé en mode débogage. Pour ce faire, suivez l'une des deux méthodes ci-après, puis demandez l'URL :

    1) Ajoutez une directive "Debug=true" au début du fichier qui a généré l'erreur. Par exemple :

    <%@ Page Language="C#" Debug="true" %>

    ou :

    2) Ajoutez la section suivante au fichier de configuration de votre application :

    <configuration>
    <system.web>
    <compilation debug="true"/>
    </system.web>
    </configuration>

    Notez qu'avec la deuxième méthode, tous les fichiers d'une application donnée seront compilés en mode débogage, alors qu'avec la première méthode, seul le fichier ayant généré l'erreur sera compilé en mode débogage.

    Important : l'exécution d'applications en mode débogage nécessitant plus de mémoire, les performances peuvent diminuer. Veillez à désactiver le mode débogage dans une application avant de déployer en phase de production.

    Trace de la pile:


    [ViewStateException: Viewstate non valide.
    Client IP: 82.229.251.24
    Port: 50241
    Referer: http://www.soda-story.com/login.aspx...n%2fchoix.aspx
    Path: /login.aspx
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
    ViewState: /wEPDwULLTE4NjA5MTIyNDNkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBRdMb2dpbjEkTG9naW5JbWFnZUJ1dHRvbkbERVmH8BDWA/8ynKfiJ21D/1UawY5u1YBPYTSGUq1g]

    [HttpException (0x80004005): Échec de la validation MAC Viewstate. Si cette application est hébergée par une batterie de serveurs ou un cluster, assurez-vous que la configuration <machineKey> spécifie le même validationKey et le même algorithme de validation. AutoGenerate ne peut pas être utilisée dans un cluster.]
    System.Web.UI.ViewStateException.ThrowMacValidationError(Exception inner, String persistedState) +11221892
    System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +11222337
    System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) +60
    System.Web.UI.HiddenFieldPageStatePersister.Load() +11222615
    System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +11303495
    System.Web.UI.Page.LoadAllState() +52
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +11298063
    System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +11297582
    System.Web.UI.Page.ProcessRequest() +119
    System.Web.UI.Page.ProcessRequest(HttpContext context) +167
    ASP.login_aspx.ProcessRequest(HttpContext context) +51
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +597
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +266


    et si je remets à True ensuite :
    Erreur du serveur dans l'application '/'.
    --------------------------------------------------------------------------------

    Une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou n'est pas accessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions distantes. (provider: SQL Network Interfaces, error: 26 - Erreur lors de la localisation du serveur/de l'instance spécifiés)
    Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.Data.SqlClient.SqlException: Une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou n'est pas accessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions distantes. (provider: SQL Network Interfaces, error: 26 - Erreur lors de la localisation du serveur/de l'instance spécifiés)

    Erreur source:

    Une exception non gérée s'est produite lors de l'exécution de la requête Web actuelle. Les informations relatives à l'origine et l'emplacement de l'exception peuvent être identifiées en utilisant la trace de la pile d'exception ci-dessous.

    Trace de la pile:


    [SqlException (0x80131904): Une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou n'est pas accessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions distantes. (provider: SQL Network Interfaces, error: 26 - Erreur lors de la localisation du serveur/de l'instance spécifiés)]
    System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +690
    System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +89
    System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +6296606
    System.Data.SqlClient.SqlConnection.Open() +300
    System.Web.DataAccess.SqlConnectionHolder.Open(HttpContext context, Boolean revertImpersonate) +150
    System.Web.DataAccess.SqlConnectionHelper.GetConnection(String connectionString, Boolean revertImpersonation) +4636431
    System.Web.Security.SqlMembershipProvider.GetPasswordWithFormat(String username, Boolean updateLastLoginActivityDate, Int32& status, String& password, Int32& passwordFormat, String& passwordSalt, Int32& failedPasswordAttemptCount, Int32& failedPasswordAnswerAttemptCount, Boolean& isApproved, DateTime& lastLoginDate, DateTime& lastActivityDate) +3674583
    System.Web.Security.SqlMembershipProvider.CheckPassword(String username, String password, Boolean updateLastLoginActivityDate, Boolean failIfNotApproved, String& salt, Int32& passwordFormat) +189
    System.Web.Security.SqlMembershipProvider.ValidateUser(String username, String password) +202
    System.Web.UI.WebControls.Login.AuthenticateUsingMembershipProvider(AuthenticateEventArgs e) +225
    System.Web.UI.WebControls.Login.AttemptLogin() +166
    System.Web.UI.WebControls.Login.OnBubbleEvent(Object source, EventArgs e) +93
    System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +52
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3691


  6. #6
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    C'est a priori ta chaine de connexion qui n'est pas correcte.
    Dans le "AttachDbFilename", essaye de mettre le chemin complet vers le fichier ASPNETDB.mdf.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Par défaut
    Bon, n'obtenant que des résultats bizarres (plus rien ne marchait), j'ai décidé de détruire la base aspnetdb.mdf et de la récréer sous Web Developper directement sur le serveur 2008.

    La connexion avec le serveur de développement de Web Developper en local se fait toujours sans problèmes par contre en connexion normale, j'ai un nouveau message qui n'a plus rien à voir :
    Erreur du serveur dans l'application '/'.

    Impossible d'ouvrir la base de données par défaut de l'utilisateur. Échec de la connexion.
    Échec de l'ouverture de session de l'utilisateur 'IIS APPPOOL\soda'.

    Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.Data.SqlClient.SqlException: Impossible d'ouvrir la base de données par défaut de l'utilisateur. Échec de la connexion.
    Échec de l'ouverture de session de l'utilisateur 'IIS APPPOOL\soda'.

    Erreur source:

    Une exception non gérée s'est produite lors de l'exécution de la requête Web actuelle. Les informations relatives à l'origine et l'emplacement de l'exception peuvent être identifiées en utilisant la trace de la pile d'exception ci-dessous.

    Trace de la pile:


    [SqlException (0x80131904): Impossible d'ouvrir la base de données par défaut de l'utilisateur. Échec de la connexion.
    Échec de l'ouverture de session de l'utilisateur 'IIS APPPOOL\soda'.]
    System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +6277312
    System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +412
    System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1363
    System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +53
    System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout) +6292062
    System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, TimeoutTimer timeout, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +6291977
    System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +352
    System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +831
    System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +49
    System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +6293782
    System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +78
    System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +1922
    System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +89
    System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +6296606
    System.Data.SqlClient.SqlConnection.Open() +300
    System.Web.DataAccess.SqlConnectionHolder.Open(HttpContext context, Boolean revertImpersonate) +150
    System.Web.DataAccess.SqlConnectionHelper.GetConnection(String connectionString, Boolean revertImpersonation) +4636431
    System.Web.Security.SqlMembershipProvider.GetPasswordWithFormat(String username, Boolean updateLastLoginActivityDate, Int32& status, String& password, Int32& passwordFormat, String& passwordSalt, Int32& failedPasswordAttemptCount, Int32& failedPasswordAnswerAttemptCount, Boolean& isApproved, DateTime& lastLoginDate, DateTime& lastActivityDate) +3674583
    System.Web.Security.SqlMembershipProvider.CheckPassword(String username, String password, Boolean updateLastLoginActivityDate, Boolean failIfNotApproved, String& salt, Int32& passwordFormat) +189
    System.Web.Security.SqlMembershipProvider.ValidateUser(String username, String password) +202
    System.Web.UI.WebControls.Login.AuthenticateUsingMembershipProvider(AuthenticateEventArgs e) +225
    System.Web.UI.WebControls.Login.AttemptLogin() +166
    System.Web.UI.WebControls.Login.OnBubbleEvent(Object source, EventArgs e) +93
    System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +52
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3691
    Le fichier web.config contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        <connectionStrings>
        <remove name="ApplicationServices" />
        <add name="CSBaseAppart" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\appartb2.accdb" providerName="System.Data.OleDb"/>
        <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=true;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
      </connectionStrings>
    J'ai remplacé |DataDirectory| par le chemin d'accès en dur comme suggéré mais cela ne change rien.

    J'en ai déduit qu'il y avait :
    1) un problème de version de SQL Express (vrai ou faux ?)
    2) qu'il y a un problème de droits d'accès à la base sql

    Pour le 2e point, j'ai donc tenté d'ajouter "Tout le monde" avec "Contrôle Total" sur la base aspnetdb.mdf et aspnetdb_log.LDF dans l'onglet Sécurité et là... ÇA MARCHE !!

    Par contre, en termes de sécurité, j'imagine que c'est pas terrible de laisser les choses en l'état.
    Ma question est qui mettre à la place de "Tout le monde" pour que la sécurité soit correcte mais que l'accès à la base continue de fonctionner ?

    Merci de toute aide !

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Par défaut
    C'est bon, j'ai trouvé : il "suffit" d'ajouter l’utilisateur IIS_IUSR dans l'onglet sécurité de la base aspnetdb.mdf et cela fonctionne.

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

Discussions similaires

  1. [PEAR][DB] Impossible de me connecter à une base mssql
    Par VincenzoR dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 22/07/2006, 08h35
  2. connection à une base sql server 2000 via odbc
    Par donny dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 20/02/2006, 08h15
  3. [C++][Connexion] Impossible de se connecter à ma base
    Par Firestarter dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 19/01/2006, 22h45
  4. Comment se connecter à une base SQL server
    Par zapia dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 22/10/2003, 17h39

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