Probleme de connexion a une base de donnee

Messages postés
10
Date d'inscription
samedi 4 août 2007
Statut
Membre
Dernière intervention
10 mai 2008
- - Dernière réponse : roura85
Messages postés
10
Date d'inscription
samedi 4 août 2007
Statut
Membre
Dernière intervention
10 mai 2008
- 24 mars 2008 à 14:57
bonjour,
j'ai cree un web service avec visual studio 2005 en c# ainsi qu'une page "identif.aspx" dans laquelle un utilisateur introduit son log et son mot de pass ensuite clique sur un boutton qui se chargera de l'appel au web service et presicement a la methode Authentif dans laquelle le web service se connecte a la base de donnee test a la table User.dbo (sql server 2005) qui contient 3 champs: Login ,Pass ,genre.
en fait mon probleme c'est que la connexion ne fonctionne et ce message d'erreur s'affiche:

System.Data.SqlClient.SqlException: Impossible d'ouvrir la base de données "test" demandée par la connexion. La connexion a échoué.
Échec de l'ouverture de session de l'utilisateur 'ROURA-B76A4CD22\ASPNET'.
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()
at StatesInformation.Authentifier(String log, String pass) in c:\StatesInfoWS\App_Code\StatesInformation.cs:line 62

encore une question je veux recuperer la valeur du champ genre de la table User car selon le type d'utilisateur apres authentification cela lui conduit a une autre page.aspx qui le concerne.
Merci pour votre aide.
Afficher la suite 

7 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
24
0
Merci
Salut,

C'est peut etre ta chaine de connexion qui est mal faite

Pour faire une bonne chaine de connexion
Utilise Visual studio et tu utilise la fenetre explorateur de serveur
tu ajoutes ta base de données
ensuite tu te connectes dessus
tu selectionne la base
et tu recuperes la connection string dans la fenetre de propriété

Tu la colles dans l'attribut connection string de to nweb.config
ou à la place de la chaine de connection.
Commenter la réponse de nhervagault
Messages postés
23
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
23 mai 2008
0
Merci
salut,
Verifi que les service de Sql Server sont en état de marche
et puis c'est vrai peut etre c'est ta chaine de connexion :

Un exemple de chaine de connexion :

Waguila Was and he's still in SLB 
Commenter la réponse de waguila666
Messages postés
10
Date d'inscription
samedi 4 août 2007
Statut
Membre
Dernière intervention
10 mai 2008
0
Merci
bonsoir,
merci nhervagault ainsi que waguila666 pour etre aussi rapide pour me repondre.


En fait j'ai verifie ma chaine de connection et elle est correcte j'ai suivi a la lettre ce que tu m'a dit nhervagault concernant la verification des services de sql server je ne sais pas comment les faire???


Voila le code de ma methode Authentif:



[




WebMethod
(

true
)]


public



string
Authentifier(

string
log,

string
pass){  


using
(

SqlConnection
connect =

new



SqlConnection
(

"Data Source=ROURA-B76A4CD22;Initial Catalog=test1;Integrated Security=True"
))




{







connect.Open();







SqlCommand
commande =

new



SqlCommand
(

"SELECT * from dbo.User WHERE Login='"
+ log +

"' and Pass='"
+ pass +

"'"
, connect);


SqlDataReader
read = commande.ExecuteReader();


return
(

String
)read[0];




}


}

et merci pour votre aide.
Commenter la réponse de roura85
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
75
0
Merci
Salut,

"Data Source= ROURA-B76A4CD22;Initial Catalog=test1; Integrated Security=True "
=> sauf s'il y a emprunt d'identité, c'est le compte utilisé pour faire tourner le worker process qui sera utilisé, d'où l'envoi de ROURA-B76A4CD22\ASPNET comme le dit le message d'erreur.

SqlCommand commande = new SqlCommand ( "SELECT * from dbo.User WHERE Login='" + log + "' and Pass='" + pass + "'" , connect);
> dans un sens heureusement que ça ne fonctionne pas > voir l'injection SQL et les requêtes paramétrées

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
24
0
Merci
Sans passer par une webmethod est ce que ca fonctionne déjà,
est-ce que la connection fonctionne autrement, apparition des tables dans l'explorateur de server
et ensuite test de la connexion pour alimenté une table simple
exemple SELECT * from dbo.User

de plus evite les chaines de requetes faites à la main par concaténation
utilise les requetes paramétrer
1-> plus de sécurité (pas d'injection SQL) exemple avec select * from dbo.user where login " toto" -- "and password 12313
on se connecte a ton site pas tres secure car le password est ignoré
et apres on peut aller plus loinselect * from dbo.user where login " toto";delete from user; -- "and password 12313
et hop plus de user

Cf saga dotnet de pascal belaud
http://www.microsoft.com/france/vision/saga-dot-net/WebcastSagaDotNet.aspx?EID=9b2687c3-beee-4fb7-8da6-e9852f0f828a

2-> plus de performance car ce mette dans le cache de sql server
3-> controle des type plus poussé (pas besoin de double quoter les ' dans les chaines de caracteres
4-> et gain de performance dans la construction de la chaine car string est immuable (recopie de string a chaque +) ce qui n'est pas le cas avec les requetes paramétré
Commenter la réponse de nhervagault
Messages postés
23
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
23 mai 2008
0
Merci
Hi,

using (
SqlConnection connect =
new
SqlConnection(
"Data Source=ROURA-B76A4CD22;Initial Catalog=test1;Integrated Security=True"))
 tu doit specifier l'instace sql server
par exemple

using (
SqlConnection connect =
new
SqlConnection(
"Data Source=ROURA-B76A4CD22\sqlserverexpress;Initial Catalog=test1;Integrated Security=True"))

et pour verifier le nom de l'instance utilise sql managment studio et avant de te logué a la base de donné ca doit apparaitre dans le champs  "nom du serveur " c ca que tu doit mettre

tien moi au courant ;)

Waguila Was and hs's still in SLB 
Commenter la réponse de waguila666
Messages postés
10
Date d'inscription
samedi 4 août 2007
Statut
Membre
Dernière intervention
10 mai 2008
0
Merci
bonjour,
en fait mon probleme se trouve dans la connexion a la base, j'arrive pas a ma connecter.
j'ai verifie dans l'explorateur de serveur en visual studio ma connexion a ma base qui fonctionne bien, concernant la requete que j'ai cree je ne sais pas si elle fonctionne puisque j'arrive pas a me connecter.


Dans ma requete j'ai besoin d'introduire le log et le pass pour avoir non l'identification des utilisateurs mais aussi la valeur du champ "genre" dans ma table car chaque type d'utilisateur sera dirige a une page bien precise a lui.


Merci pour vos suggestions.
Commenter la réponse de roura85