3

I'm trying to integrate Microsoft Dynamics Nav 2009 R2 (Navision) with Sharepoint 2010 using external content types. I'm very new to both Dynamics Nav and to the Buisness Connectivity Service in Sharepoint 2010 and I can't get it to work.

I know that you can publish pages in Dynamics Nav as web services and I've published one of the demo pages as a web service and have successfully connected to it using Visual Studio (added it as a web reference). I've called the add and delete methods programmatically and it worked fine.

I opened sharepoint designer and tried to add an external content type. I set the "Data Source Type" to "WCF Service" and used the url to the web service (http://devel:7047/DynamicsNAV/WS/Page/Customer) in both "Service Metadata Url" and "Service EndPoint Url". When I try to connect to the web service I get an error saying "Cannot find any matching endpoint configuration".

Like I said earlier, I'm very new to both Microsoft Dynamics Nav and External Content Types in SharePoint. Information about Dynamics Nav and Sharepoint integration is hard to find and I'm feeling a bit lost. Will really appreciate if anyone can shed some light on how to integrate Dynamics Nav with SharePoint using BCS.

4

1 回答 1

1

请原谅我,因为虽然我对 NAV Web 服务有所了解,但我对 Sharepoint 和 BCS 几乎一无所知。

然而,话虽如此,我确实有一些建议可能会有所帮助:首先,NAV Web 服务构建在 WCF 之上并使用 BasicHttpBinding。如果您对如何将 WCF BasicHttpBinding 服务连接到 BCS 进行一些研究,您可能会在那里获得一些牵引力。任何标准 BasicHttpBinding 服务与特定于 NAV 的 Web 服务之间没有根本区别。

您还提到您能够使用 Web 引用成功连接到 Visual Studio 中的 NAV Web 服务。但是,Web 引用代理是使用较旧的“wsdl.exe”实用程序构建的,因此只能与经典的 SOAP Web 服务一起使用。虽然 BasicHttpBinding 服务与 SOAP Web 服务完全向后兼容,但仍然存在缺少任何 WCF 服务独有的配置设置的问题。您确实可能需要考虑在 Visual Studio 中使用服务引用,并弄清楚如何让它与您发布的 NAV Web 服务一起正常工作。有了它,您可以使用生成的配置设置来了解共享点设计器中缺少的内容。我的猜测是缺少的“端点配置”错误告诉你,总而言之,在您可以使用 WCF 代理连接到 NAV Web 服务之前,SharePoint 设计器中需要一些 WCF 特定的设置。例如,它可能在安全领域,因为 WCF 为您提供了比经典 SOAP 更精细的控制级别。同样,我认为关键是要记住 sharepoint 需要正确配置的 WCF 端点,而旧的 Web 引用则不需要。这可能就是为什么你可以让它在视觉工作室而不是在共享点设计器中工作的原因。我认为关键是要记住 sharepoint 需要正确配置的 WCF 端点,而旧的 Web 引用则不需要。这可能就是为什么你可以让它在视觉工作室而不是在共享点设计器中工作的原因。我认为关键是要记住 sharepoint 需要正确配置的 WCF 端点,而旧的 Web 引用则不需要。这可能就是为什么你可以让它在视觉工作室而不是在共享点设计器中工作的原因。

只是给你一个想法(不是“最佳实践”的课程),当我在我的 NAV 项目中创建服务引用代理时,我经常尝试使用基于代码的配置而不是过于冗长的基于文件的配置(尤其是因为我们无论如何都无法控制 NAV 服务层端点绑定)。我使用与此类似的代码来创建客户端连接(当然这只是伪代码,不会编译,例如,您需要指向一个实际的服务引用客户端代理类,但这应该会给您一个想法哪些 WCF 绑定配置参数是必需的):

    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;
    }

希望这可以帮助。祝你好运!

于 2012-09-18T01:31:20.860 回答