Authentification

cs_sofiesofie Messages postés 52 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 26 juin 2008 - 4 juin 2008 à 17:13
cs_sofiesofie Messages postés 52 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 26 juin 2008 - 12 juin 2008 à 02:17
salut,
j'ai une méthode d'authentification (d'ouvrir une session) dans un web service, j'ai essayé cette méthode en Windows Vista(laptop de ma copine), elle ça marche trés bien sans erreur et me donne comme résultat: "true"

et je l'ai essayé en Windows XP SP2( mon pc) elle me donne une erreur au niveau de la ligne
   public int authentifier(string user, string vv)





erreur: 


'WS_authentification.authentifier(string, string)' : tous les chemins de code ne retournent pas nécessairement une valeur

 
/////////////***************debut code:***************//////////////
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
....

[
WebMethod]

public
int authentifier(
string login,
string mp)
{
System.Data.SqlClient.
SqlConnection connexion;
connexion =
new System.Data.SqlClient.
SqlConnection();

string connectString =
"Data Source=STANDARD;"
                                         +
"Initial Catalog=SejoursHOTEL;"
                                         +
"User ID=sa;"
                                         +
"Password=administrateur;";

string strQuery =
"select sa_Num_CLI from T_Client";
connexion.ConnectionString = connectString;

SqlCommand oCommand =
new
SqlCommand(strQuery, connexion);

// Connexion … la base de donn‚es
connexion.Open();

SqlDataReader oReader = oCommand.ExecuteReader();

// bool returnBool = false;
int a = 0;

while (oReader.Read())
{

if ((oReader[11].ToString() == login) && (oReader[12].ToString() == mp))
{
Session[
"UserNum"] = oReader[0].ToString();

//Session["UserPasswd"] = Passwd;
// returnBool = true;
a = 1;
}
oReader.Close();
connexion.Close();

//return returnBool;
return a;
}}



////////////////*************fin code****************//////////////

est ce qu'il ya quelqu'un qui peut m'aider, vraiment je suis bloquée :( , et j'ai besoin de l'authentification pour terminer mon application, merci
excusez moi si j'ai mal choisi le thème , il n'ya pas C# et web service en .NET
merci pour codes-sources

5 réponses

cs_sofiesofie Messages postés 52 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 26 juin 2008
4 juin 2008 à 17:43
salut,
juste j'ai oublié de changer    public int authentifier(string user, string vv) par celle ci   public int authentifier(string login, string mp)

( j'ai essayé de changer login par user , car j'ai pensé que peut etre le mot "login" est un mot réservé en .NET)
merci
merci pour codes-sources
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
4 juin 2008 à 18:28
En déplaçant une des deux dernières accolade fermante ('}') à la fin et en la mettant juste avant la ligne :

oReader.Close();

ca devrait marcher mieux...

Mais par contre, ca n'a (a priori) rien a voir avec Vista ou Xp : tu fais ton return dans le while, donc si tu ne rentre jamais dans le while, tu ne fait jamais de return (d'où le message d'erreur).

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
0
Liverion Messages postés 296 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 18 août 2008
5 juin 2008 à 11:08
Sinon je sais pas si c'est une erreur de recopie, mais dans ton if devrait y avoir des " autour de login et mp à mon avis

Et par hasard il ne passerait pas seulement une fois dans ta boucle while ? parce que pour moi il passe dès la premiere fois dans le oReader.Close(), donc quel est l'interet du while ?
Et sinon au pire tu glisse un return -1 entre tes 2 dernières accolades, pour faire un retour d'erreur

~~
Les trois lois de Codes-Sources :
Loi 1) Tu lis et respectes le reglement
Loi 2) Tu penses à valider si une reponse apportée à ton problème t'a aidé
Loi 3) Si tu ne respectes pas les 2 premières ....TU SORS !!
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
5 juin 2008 à 12:09
Pas besoin de ' " ' dans le if, ce sont des noms de variables...

D'apres le message d'erreur et d'après le code, c'est simplement ton return qui est mal placé.
Par contre ca n'explique pas pourquoi ca marchait sous Vista... tu es sur de ne pas avoir modifié le code entre temps?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_sofiesofie Messages postés 52 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 26 juin 2008
12 juin 2008 à 02:17
bonsoir, bon j'ai connait la faute, c'est au niveau de la requete il faut mettre "*" au lieu "sa_Num_CLI " .  et aussi il faut changer l'emplacement de "{"  et désolé si je vous dérangez
mais toujours il me reste un problème. il ne comprend pas cette ligne.
 Session["UserNum"] = oReader[0].ToString();
j'ai testé avec des variables pour connaitre le problème: il entre dans le while et aussi dans le test de if . l'erreur au niveau de la session
merci de votre collaboration

merci pour codes-sources
0
Rejoignez-nous