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;
}
お役に立てれば。幸運を!