3

外部コンテンツ タイプを使用して、Microsoft Dynamics Nav 2009 R2 (Navision) を SharePoint 2010 と統合しようとしています。私は Dynamics Nav と SharePoint 2010 の Business Connectivity Service の両方に非常に慣れていないため、機能させることができません。

Dynamics Nav でページを Web サービスとして公開できることはわかっています。デモ ページの 1 つを Web サービスとして公開し、Visual Studio を使用して正常に接続しました (Web 参照として追加しました)。add メソッドと delete メソッドをプログラムで呼び出したところ、問題なく動作しました。

SharePoint デザイナーを開き、外部コンテンツ タイプを追加しようとしました。「データ ソース タイプ」を「WCF サービス」に設定し、「サービス メタデータ URL」と「サービス エンドポイント URL」の両方で Web サービスへの URL (http://devel:7047/DynamicsNAV/WS/Page/Customer) を使用しました。 "。Web サービスに接続しようとすると、「一致するエンドポイント構成が見つかりません」というエラーが表示されます。

前に述べたように、私は Microsoft Dynamics Nav と SharePoint の外部コンテンツ タイプの両方に非常に慣れていません。Dynamics Nav と Sharepoint の統合に関する情報を見つけるのが難しく、少し迷っています。BCS を使用して Dynamics Nav を SharePoint と統合する方法について誰かが光を当てることができれば、本当に感謝しています。

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 サービスで正しく動作させる方法を検討することを検討してください。これにより、生成された構成設定を使用して、sharepoint デザイナーに何が欠けているかを把握できます。私の推測では、欠落している「エンドポイント構成」エラーがあなたに言っていると思います. つまり、WCF プロキシを使用して NAV Web サービスに接続する前に、sharepoint Designer で WCF 固有の設定をいくつか行う必要があります。たとえば、WCF は従来の SOAP よりもはるかに細かいレベルの制御を提供するため、セキュリティの領域にある可能性があります。繰り返しになりますが、重要なのは、sharepoint には適切に構成された WCF エンドポイントが必要であるのに対し、古い Web 参照には必要ないことを覚えておくことです。それがおそらく、sharepoint デザイナーではなく、ビジュアル スタジオで動作させることができる理由です。私が考える重要な点は、sharepoint には適切に構成された WCF エンドポイントが必要であるのに対し、古い Web 参照には必要ないことを覚えていることです。それがおそらく、sharepoint デザイナーではなく、ビジュアル スタジオで動作させることができる理由です。私が考える重要な点は、sharepoint には適切に構成された WCF エンドポイントが必要であるのに対し、古い Web 参照には必要ないことを覚えていることです。それがおそらく、sharepoint デザイナーではなく、ビジュアル スタジオで動作させることができる理由です。

アイデアを提供するために (「ベスト プラクティス」のレッスンではありません)、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 に答える