2

GP WebServiceに接続し、そのGetCustomerList()メソッドを呼び出して、GreatPlainsから顧客を獲得するプログラムを作成しようとしています。以下に概説しているコードは、ドキュメントで見つけたものと重複していますが、実行するとSoapExceptionが発生します。クレデンシャル(ユーザー名やパスワードなど)が不足しているかどうか、またはこれを適切に呼び出しているかどうかはわかりません。Dynamics Security Consoleでセキュリティ設定が正しく設定されていると思いますが、100%確信が持てないか、他に構成する必要があるものがあるかどうかはわかりません。どんな助けでも大歓迎です。

public IList<string> GetCustomerNames()
{
    //Added a ServiceReference to the actual WebService which appears to be working
    var service = new DynamicsGPClient();
    var context = new Context();
    var customerKey = new CustomerKey();
    var companyKey = new CompanyKey();

    //Trying to load the test data
    companyKey.Id = (-1);

    context.OrganizationKey = (OrganizationKey)companyKey;

    //Trying to load the test data
    customerKey.Id = "AARONFIT0001";

    var customers = service.GetCustomerList(new CustomerCriteria(), context);

    return customers.Select(x => x.Name).ToList();
}
4

1 に答える 1

1

セキュリティの問題のようですね ... 特定のエラー メッセージが表示されますか ... 参考になるかもしれません ...

こんなのも発見…

Web サービスに Windows アプリ プール ID が必要なようです。現在、IIS セキュリティが「匿名」に設定されているため、クライアントはメソッドを呼び出すときに資格情報を渡す必要はありません。

これをオフにして、アプリ プールを Windows アカウントとして実行する必要があります。それが機能するようになったら、その 1 つのアプリケーション プール ID を Web サービスのセキュリティに追加し、すべての操作をそのアカウントとして実行するか (セキュリティが低い)、またはラッパーで行うかを選択できます。 HTTP ユーザーのコンテキスト ID を使用し、実際に使用している GP WebService 呼び出しの「WorkOnBehalfOf」プロパティに設定します。

Web サービス セキュリティ コンソールでアプリケーション プール ID に「WorkOnBehalfOf」権限を付与し、Web サービスを呼び出すユーザーを指定する必要があります。これにより、セキュリティ モデルが損なわれず、ラップされた Web サービスを呼び出すユーザーが実際に元の GP Web サービス メソッドを呼び出す権限を持っていることを承認します。(これは、ビジネス ポータルが要求を Web サービスに転送する方法です。)

https://groups.google.com/forum/?fromgroups=#!topic/microsoft.public.greatplains/W7gAo_zXit8

于 2013-01-26T13:02:35.600 に答える