operation contract, exposer une méthode côté client
Bonjor à vous !
Voici mon problème :
j'ai un service web qui lors de l'appel d'une méthode, accède à une base de données et construit un objet utilisateur grâce à plusieurs requête.
L'objet utilisateur est de type Utilisateur, définit dans un fichier Utilisateur.cs du côté de mon webservice.
Cette classe possède plusieurs propriétés et 1 méthode. Simplement lorsque je charge mon service web à partir de mon application silverlight, les propriétés sont accessibles, mais je ne vois pas la méthode !
De quel attribut dois je décorer ma classe Utilisateur, ma méthode getUtilisateur pour qu'elle soit accessible depuis l'extérieur sans avoir à recréer une classe cpoté client qui hérite de ................. blablabla ^^
Le code parlant plus à certains voici mon service web suivit de la classe Utilisateur.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service_connexion : IService_connexion
{
/// <summary>
/// Récupérer le user connécté avec son profil (notamment pour récupérer ses droits).
/// </summary>
/// <param name="login">login de l'utilisateur stocké dans la base de données</param>
/// <returns>Retourne un objet Utilisateur</returns>
///
Utilisateur IService_connexion.getUtilisateur(string login)
{
try
{
SPDataContext dc = new SPDataContext();
wap__authentificationResult u = dc.wap__authentification(login).First();
Utilisateur user = new Utilisateur
{
_UserId = u.User_id,
_UserCode = u.User_login,
_EmployeId = u.Employe_id.Value,
_EmployeNom = u.Employe_nom,
_Agence = new AGENCE { AGC_ID = u.Agence_id, AGC_LIBELLE = u.Agence_nom }
};
user.setDroits(dc.wap__droits(u.User_id).ToList());
return user;
}
catch (Exception)
{
return null;
}
} |
La classe utilisateur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
[DataContract()]
public class Utilisateur
{
/// <summary>
/// Numéro d'identification d'utilisateur.
/// </summary>
///
[DataMember()]
public int _UserId { get; set; }
/// <summary>
/// Login de l'utilisateur.
/// </summary>
///
[DataMember()]
public string _UserCode { get; set; }
/// <summary>
/// Numéro d'identification employé.
/// </summary>
///
[DataMember()]
public int _EmployeId { get; set; }
/// <summary>
/// Nom de l'employé.
/// </summary>
///
[DataMember()]
public string _EmployeNom { get; set; }
/// <summary>
/// Agence de l'utilisateur.
/// </summary>
///
[DataMember()]
public AGENCE _Agence { get; set; }
/// <summary>
/// Liste des droits de l'utilisateur
/// >> 0 - aucun droits
/// >> 1 - droit de lecture
/// >> 2 - droit d'écriture
/// >> 3 - droit total / spécial
/// </summary>
///
//[DataMemberAttribute()]
public List<wap__droitsResult> _Droits { get; set; }
/// <summary>
/// Stocke la liste des droits utilisateurs.
/// </summary>
/// <param name="lesDroits">liste d'objet wap__droitsResult</param>
///
public void setDroits(List<wap__droitsResult> lesDroits)
{
if (lesDroits != null)
{
if (_Droits == null)
_Droits = new List<wap__droitsResult>();
_Droits = lesDroits;
}
}
/// <summary>
/// Permet de savoir si un utilisateur à le droit de se connecter à un formulaire ou pas et de savoir l'étendu de ses privilèges.
/// </summary>
/// <param name="libelleDroit">Nom du droit</param>
/// <returns>
/// >> 0 - aucun droits
/// >> 1 - droit de lecture
/// >> 2 - droit d'écriture
/// >> 3 - droit total / spécialentier
/// </returns>
///
[OperationContract()]
public int droitUtilisateur(string libelleDroit)
{
foreach (wap__droitsResult d in _Droits)
{
if (d.Droit_nom == libelleDroit)
return d.Droit_valeur.Value;
}
return 0;
} |
La méthode droitUtilisateur n'est pas accessible côté client alors que le reste si. Comment faire ? Meci !!!