none
UserProfileService dans une ferme avec plusieurs serveurs applicatifs RRS feed

  • Discussion générale

  • Bonjour,

    J'ai une topologie sur ma ferme comme ceci :

    4 serveurs d'applications,
    4 serveurs Crawl,
    4 serveurs Query,
    2 serveurs Web.

    J'utilise le UserProfileService dans mon développement en vue d'obtenir le UserProfile de l'utilisateur actuel.

    Lorsque l'un de mes serveur d'applications est down, j'ai une exception lorsque j'appelle la méthode GetUserProfile du UserProfileManager. L'exception est UserProfileApplicationNotAvailableException. Cette exception se produit jusqu'à ce que SharePoint exécute le code sur un serveur disponible.

    Je dois recharger les pages à plusieurs reprises afin de tomber sur un serveur disponible.

    C'est un problème grave parce que j'ai plusieurs serveurs d'applications afin d'avoir un service de haute disponibilités sur la plateforme. Un service de haute disponibilité qui ne fonctionne pas à cause de ce problème.

    Est-ce que quelqu'un sait ce qu'il faut faire dans mon développement pour ne pas avoir ce problème?

    Merci beaucoup

    mercredi 14 novembre 2012 10:11

Toutes les réponses

  • Bonjour,

    Pourrais tu nous montrer le morceau de code qui leve l'exception?

    Sinon, il est aussi possible que ce probleme ne puisse pas etre réglé uniquement avec du code mais ausi avec de la configuration ; dans ce cas tu pourrais obtenir de l'aide sur ce forum :


    Cordialement/Regards,

    Ludovic Caffin
    .NET/SharePoint Consultant for A3IS.

    mercredi 14 novembre 2012 15:38
  • Bonjour,

    Le bout de code qui génère l'exception est :

    UserProfile up = profileManager.GetUserProfile(userName);

    L'objet profileManager a été déclaré de la manière suivante : UserProfileManager profileManager = new UserProfileManager(context);

    Merci.

    jeudi 15 novembre 2012 09:23
  • Merci pour le code.

    J'ai fait quelques recherches, mais je ne trouve pas de moyens d'avoir une emprise sur le serveur appelé par le UserProfileManager.

    Le UserProfileManager se base sur le contexte, et le SPServiceContext se construit sur une URL (via un SPSite).

    Je pense vraiment que la solution viendra de la configuration et pas du code.


    Cordialement/Regards,

    Ludovic Caffin
    .NET/SharePoint Consultant for A3IS.

    jeudi 15 novembre 2012 14:32
  • Bonjour davcano,

    Pourriez-vous confirmer que le problème est bien a la configuration comme le cite Ludovuic Caffin? Si c'est le cas, je redirigerais la question vers l'infra.

    Bien à vous,

    Gokan


    Gokan Ozcifci Technical Blog
    SharePoint Community Expert

    lundi 19 novembre 2012 12:01
  • Bonjour,

    Ce n'est pas un problème de configuration.

    Microsoft nous a indiqué qu'il fallait le gérer dans notre code en relançant l'appel mais ça ne corrige pas le problème, d'où mon poste sur le forum afin de trouver de l'aide sur le sujet.

    lundi 19 novembre 2012 12:05
  • Bonjour davcano,

    Je ne suis pas développeur mais pourriez-vous exposer les explications que vous avez recu de "Microsoft" ? Cela peux aider aux contributeur à répondre..?

    Merci pour votre collaboration,

    Gokan


    Gokan Ozcifci Technical Blog
    SharePoint Community Expert

    mardi 20 novembre 2012 07:31
  • Je vais faire l'historique :

    Tout à commencer avec le Search Service Application.

    Comme dit dans mon post original nous avons 4 serveurs de Query. Nous nous sommes rendus compte que lorsque l'on coupe un des serveurs de Query les composants dans lesquels nous faisons appel au Search étaient en erreur.

    Après diverses recherches, Microsoft nous a indiqué que les services SharePoint ne géraient pas le LoadBalancing entre les serveurs, c'est à dire que si un serveur de Query tombe, le Search Service Application ne sait pas que le serveur est DOWN et donc renvoie une erreur.

    Microsoft nous a lors indiqué qu'il fallait le gérer dans notre code de la manière suivante :

    • Si exception d'un certain type (je ne me rappelle plus du type, mais c'est une exception renvoyée lorsque le Search Service n'arrive pas à atteindre le serveur DOWN) alors on relance la requête au Search. La relance se fait X fois (X est paramétrable) afin d'éviter une boucle infini
    • Si pas d'exception, on continue le traitement 

    Nous avons donc mis ceci en place sur nos appels au Search et ça fonctionne très bien !

    Nous avons alors remarqué que ce problème avait également lieu lorsque l'on appelle les autres Services de SharePoint comme notamment le User Profile Service.

    Microsoft nous a indiqué de faire le même traitement que nos appels au Search sur les appels au UserProfile.

    Mais la ça ne fonctionne pas...

    mercredi 21 novembre 2012 10:46
  • Donc nous n'arrivons pas à appeler un User Profile Service particulier lorsqu'il y en a plusieurs dans une ferme.

    Dans ce cas, je te propose d'essayer de récupérer les profils utilisateurs par web service:

    On peut indiquer à l'instanciation du service un serveur spécifique:

    http://<server>/_vti_bin/UserProfileService.asmx


    Cordialement/Regards,

    Ludovic Caffin
    .NET/SharePoint Consultant for A3IS.

    lundi 26 novembre 2012 09:59
  • Bonjour davcano,

    Les solutions de Ludovic vous ont t'il aidé pour votre problème?

    Merci,

    Gokan


    My New Technical Blog: WWW.GKNZCFC.NET
    SharePoint Community Expert

    lundi 3 décembre 2012 07:30
  • Bonjour,

    Je n'ai pas encore eu le temps d'essayer de la mettre en place malheureusement. Mais la piste me semble intéressant. Je vous fais un retour dès que j'ai réussi à le faire.

    Merci.

    mardi 4 décembre 2012 14:50