2010-07-29 10 views
0

Je cours ce code (avec des noms et des détails de sécurité obscurcis). Quand je le fais, je reçois 401 non autorisé. Les informations d'identification sont celles de l'utilisateur sur le serveur hébergé. Est-ce possible contre un système IFD?Puis-je utiliser le SDK Dynamics CRM 4.0 sur un système IFD hébergé?

var token = new CrmAuthenticationToken(); token.AuthenticationType = 0; token.OrganizationName = "monorganisation";

CrmService service = new CrmService(); 
    service.Url = "https://myorganisation.dynamicsgateway.com/mscrmservices/2007/crmservice.asmx"; 
    service.CrmAuthenticationTokenValue = token; 
    service.Credentials = new NetworkCredential("bob.smith", "Password", "HOSTEDCRM"); 

    var request = new RetrieveMultipleRequest(); 
    request.Query = new QueryExpression 
    { 
     ColumnSet = new ColumnSet(new string[] { "name" }), 
     EntityName = "account" 
    }; 
    var response = service.Execute(request); 

Répondre

1

Oui, il est possible, vous manque seulement de petits morceaux, le CrmAuthenticationToken.ExtractCrmAuthenticationToken.

Découvrez ce grand explaination sur la dynamique du Forum http://social.microsoft.com/Forums/en-US/crmdevelopment/thread/81f8ba82-981d-40dd-893d-3add67436478

+0

Cela semble bien, mais comment puis-je obtenir un lien vers le service de discothèque? Visual Studio voit le XML mais n'ajoute pas le lien en disant que l'information de découverte n'est pas disponible. –

+0

Le service Disco est toujours sous /MSCRMServices/2007/SPLA/CrmDiscoveryService.asmx sous l'adresse URL actuelle. Vous ne souhaitez pas ajouter de référence, car toutes les pages du répertoire ISV s'exécutent d'elles-mêmes. Elles s'exécutent dans le pool d'applications CRM de sorte que vous ne pouvez pas ajouter de références aux services. – BeardinaSuit

+0

BTW, juste au cas où vous avez créé une Application pour vos pages ASPx, vous ne pouvez pas utiliser cela avec IFD, vous devez supprimer les pages ASPx sous le dossier ISV afin qu'elles puissent être compilées par l'application CRM et intégrées dans le même contexte ... – BeardinaSuit

2

Je suppose que ce code est en dehors du site Web CRM? Dans ce cas, vous devrez ajouter une référence au service de découverte, comme le souligne Mercure. Vous devrez exécuter une demande RetrieveCrmTicketRequest par rapport au service de découverte pour obtenir un bon ticket de connexion aux services Crm.

Dans votre jeton d'authentification CRM, vous devez définir le type d'authentification sur 2 (IFD). Ensuite, définissez la propriété CrmTicket du jeton sur le ticket que vous avez reçu de votre RetrieveCrmTicketResponse.

Je définis également l'URL en fonction de cette réponse, mais vous pouvez continuer à le coder en dur.

Vous souhaiterez continuer à définir les informations d'identification sur le service.

J'utilise un seul utilisateur pour se connecter à CRM et mettre en cache ce ticket (une date d'expiration est dans la réponse du service de découverte). De cette façon, je peux contourner le service de découverte sur les futures demandes. Il y a un code d'erreur à rechercher pour retrouver le ticket, mais je ne l'ai pas en main.