[WCF RIA Services] Utiliser un DomainService dans un AuthenticationService
Avec WCF RIA Services, les DomainServices permettent d’exposer des méthodes qui seront accessibles par le client. De plus, les AuthenticationServices permettent de gérer la sécurité: où aller chercher les informations permettant d’identifier les utilisateurs, etc.
On pourrait tout à fait vouloir utiliser son DomainService directement au sein de son AuthenticationService, comme de la façon suivante par exemple:
1: [EnableClientAccess]
2: public class AuthenticationService : AuthenticationBase<User>
3: {
4: protected override User GetAuthenticatedUser(System.Security.Principal.IPrincipal principal)
5: {
6: var currentUser = base.GetAuthenticatedUser(principal);
7:
8: var membershipUser = Membership.GetUser(principal.Identity.Name, true);
9: currentUser.UserID = (Guid)membershipUser.ProviderUserKey;
10: currentUser.NumberOfDedicaces = this.m_Service != null ? this.m_Service.GetDedicacesCountForUser(currentUser.UserID) : 0;
11:
12: return currentUser;
13: }
14: }
Le problème, c’est que si vous exécutez ce code, vous obtiendrez l’erreur suivante:
Pour corriger ce problème, il est nécessaire d’initialiser le DomainService, en utilisant la méthode Initialize:
1: // Initialize the DomainService
2: this.m_Service.Initialize(this.ServiceContext);
D’ailleurs, si l’on regarde la documentation de la méthode Initialize, on voit qu’il est écrit qu’il est nécessaire d’appeler cette méthode avant de faire appel à une méthode du DomainService:
Une fois cette méthode appelée, il n’y a plus de problèmes 
A+
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :