Web サービスを使用して GP から顧客のリストを返そうとしていますが、クエリの実行時に問題が発生しています。クエリを実行して会社のリストを取得できるため、Dynamics データベースへのメイン接続が機能していることを確認できます (これは、Customer クエリのコンテキストで使用する CompanyID キーを取得した方法です)。
しかし、他のクエリを実行すると、eConnect に送信される XML で CompanyKey がゼロ (0) に設定されているように見えます。返される例外は、"Microsoft.Dynamics.Security.NonExistentSecurityObjectException : The security object does not exist. Key = 0" です。サービスに送信されている xml を見ると、要素も 0 に設定されていることに気付きました。クエリする会社の値を明示的に設定します (この場合は、前に会社リスト クエリを実行して取得した 37 です)。
送信される完全な XML は次のとおりです。
<?xml version="1.0"?>
<RequestObjects>
<Context xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/dynamics/2006/01">
<OrganizationKey xsi:type="CompanyKey">
<Id>0</Id>
</OrganizationKey>
<CurrencyType>Transactional</CurrencyType>
</Context>
<CustomerCriteria xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Scope>Return All</Scope>
</CustomerCriteria>
</RequestObjects>
クライアント アプリで使用している基になる C# コードについては、次のとおりです。
CompanyKey companyKey;
Context context;
DynamicsGPClient wsDynamicsGP = new DynamicsGPClient();
context = new Context();
companyKey = new CompanyKey();
companyKey.Id = 37;
context.OrganizationKey = companyKey;
companies = wsDynamicsGP.GetCustomerList( new CustomerCriteria { }, context );
私は、GP2010 Web サービス開発者が Microsoft から直接手動で提供した例に基づいてコードを作成しました。