DynamicsGP 2010 eConnect Web Services GetList overwrites Cus

本文关键字:GetList overwrites Cus Services Web 2010 eConnect DynamicsGP | 更新日期: 2023-09-27 18:19:09

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

但是,当我执行任何类型的其他查询时,看起来CompanyKey在发送给eConnect的XML中被设置为零(0)。返回的异常是"Microsoft.Dynamics.Security"。NonExistentSecurityObjectException:安全对象不存在。当我查看发送到服务的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服务开发人员直接从微软手动给出的示例。

DynamicsGP 2010 eConnect Web Services GetList overwrites Cus

确保GP和web服务中的实践目录数据库中的键是相同的。这可能是web服务中缺少的一个键。

有一个关于你需要运行的SQL查询的技术知识:

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

get company id
SELECT CMPNYNAM, INTERID, CMPANYID
    FROM DYNAMICS.dbo.SY01500

如果公司id为数学,则提供维修web服务。之后,在IIS中将基本身份验证设置为启用