3 votes

Intégration de Microsoft Dynamics Nav (Navision) avec Sharepoint 2010 en utilisant BCS

J'essaie d'intégrer Microsoft Dynamics Nav 2009 R2 (Navision) avec Sharepoint 2010 en utilisant des types de contenu externes. Je suis très novice en ce qui concerne Dynamics Nav et le Buisness Connectivity Service dans Sharepoint 2010 et je n'arrive pas à le faire fonctionner.

Je sais qu'il est possible de publier des pages dans Dynamics Nav en tant que services web et j'ai publié l'une des pages de démonstration en tant que service web et je m'y suis connecté avec succès à l'aide de Visual Studio (je l'ai ajouté en tant que référence web). J'ai appelé les méthodes d'ajout et de suppression par programme et tout s'est bien passé.

J'ai ouvert sharepoint designer et j'ai essayé d'ajouter un type de contenu externe. J'ai réglé le "Data Source Type" sur "WCF Service" et j'ai utilisé l'url du service web (http://devel:7047/DynamicsNAV/WS/Page/Customer) à la fois dans "Service Metadata Url" et "Service EndPoint Url". Lorsque j'essaie de me connecter au service web, j'obtiens une erreur indiquant "Cannot find any matching endpoint configuration".

Comme je l'ai dit précédemment, je suis très novice en ce qui concerne Microsoft Dynamics Nav et les types de contenu externe dans SharePoint. Les informations sur Dynamics Nav et l'intégration de SharePoint sont difficiles à trouver et je me sens un peu perdu. J'apprécierais vraiment que quelqu'un m'éclaire sur la façon d'intégrer Dynamics Nav avec SharePoint en utilisant BCS.

1voto

Jamie Brindley Points 1

Pardonnez-moi, car si je connais un peu les services web de NAV, je ne sais pratiquement rien de Sharepoint et de BCS.

Cela dit, j'ai quelques conseils qui pourraient être utiles : tout d'abord, les services web de NAV sont construits sur WCF et utilisent le BasicHttpBinding. Si vous faites quelques recherches sur la manière de connecter un service WCF BasicHttpBinding à BCS, vous pourriez obtenir quelques résultats. Il n'y a pas de différence fondamentale entre un service BasicHttpBinding standard et un service web spécifique à NAV.

Vous avez également indiqué que vous avez réussi à vous connecter aux services web de NAV dans Visual Studio à l'aide d'une référence web. Cependant, les proxies de référence web sont construits à l'aide de l'ancien utilitaire "wsdl.exe" et, en tant que tels, ils ne peuvent fonctionner qu'avec des services web SOAP classiques. Bien que les services BasicHttpBinding soient entièrement rétrocompatibles avec les services web SOAP, il reste le problème des paramètres de configuration manquants qui sont propres à tout service WCF. Vous devriez vraiment envisager d'utiliser une référence de service dans Visual Studio et de trouver comment la faire fonctionner correctement avec vos services web NAV publiés. Vous pourrez alors utiliser les paramètres de configuration générés pour avoir une idée de ce qui manque dans le concepteur de SharePoint. Je pense que l'erreur "endpoint configuration" manquante vous indique, en d'autres termes, que certains paramètres spécifiques à WCF sont nécessaires dans sharepoint designer avant que vous puissiez vous connecter au service web NAV à l'aide d'un proxy WCF. Cela pourrait être dans le domaine de la sécurité par exemple, puisque WCF vous donne un niveau de contrôle beaucoup plus granulaire que SOAP classique. Encore une fois, je pense que la clé est de se rappeler que Sharepoint a besoin d'un point de terminaison WCF correctement configuré alors que les anciennes références web n'en ont pas besoin. C'est probablement la raison pour laquelle vous pouvez le faire fonctionner dans Visual Studio mais pas dans Sharepoint Designer.

Pour vous donner une idée (et non une leçon sur les "meilleures pratiques"), lorsque je crée un proxy de référence de service dans mes projets NAV, j'essaie souvent d'opter pour une configuration basée sur le code plutôt que pour une configuration basée sur un fichier trop verbeux (d'autant plus que nous ne pouvons de toute façon pas contrôler les bindings des points d'extrémité du niveau de service NAV). J'utilise un code similaire à celui-ci pour créer une connexion client (bien sûr, ce n'est que du pseudo-code et il ne compilera pas, vous aurez besoin de pointer vers une classe de proxy client de référence de service réelle par exemple, mais cela devrait vous donner une idée des paramètres de configuration de liaison WCF qui sont nécessaires) :

    using System.Security.Principal;
    using System.ServiceModel;

    private void TestNavConnection(string url)
    {
        using (var ws = new NavServiceReference(GetBindingTransportCredentialOnly(), new EndpointAddress(url)))
        {
            ws.ClientCredentials.Windows.AllowNtlm = true;
            ws.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Delegation;
            var record = ws.Read("XYZ");
        }
    }

    private static BasicHttpBinding GetBindingTransportCredentialOnly()
    {
        var binding = new BasicHttpBinding();
        binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
        binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
        binding.MaxReceivedMessageSize = 1048576;
        return binding;
    }

J'espère que cela vous aidera. Je vous souhaite bonne chance !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X