0

我正在尝试使用 Web 服务从 GP 返回客户列表,但是在执行查询时遇到了问题。我可以确认到 Dynamics 数据库的主要连接正在工作,因为我可以运行查询来检索公司列表(这就是我检索 CompanyID 键以与我的客户查询上下文一起使用的方式。)

但是,当我执行任何其他查询时,看起来 CompanyKey 在发送到 eConnect 的 XML 中被设置为零 (0)。返回的异常是“Microsoft.Dynamics.Security.NonExistentSecurityObjectException:安全对象不存在。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 );

我的代码基于直接从 Microsoft 手动提供的 GP2010 Web 服务开发人员中给出的示例。

4

2 回答 2

0

确保 GP 中的密钥和 Web 服务中的 actice 目录数据库中的密钥相同。它可能是 Web 服务中缺少的键。

您需要运行的 SQL 查询有这方面的技术知识:

https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?WTNTZSMNWUKNTMMYVLXUZLWUKKQPOVRVTLKUSRMOQVVYUKKXRVYRTTWLZTPWKURU

于 2013-07-09T13:48:31.930 回答
0
get company id

SELECT CMPNYNAM, INTERID, CMPANYID
    FROM DYNAMICS.dbo.SY01500

如果公司 id 数学然后进行维修网络服务。在此之后在 IIS 中将基本身份验证设置为启用

就我而言,此解决方案有所帮助。

于 2014-03-24T12:48:05.540 回答