我正在尝试使用Web服务从GP返回客户列表,但是在执行查询时遇到了问题。我可以确认到Dynamics数据库的主连接正在工作,因为我可以运行一个查询来检索公司列表(这就是我检索CompanyID键以用于客户查询的上下文的方式)。
但是,当我执行任何其他类型的查询时,在发送到eConnect的XML中,CompanyKey似乎被设置为零(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 );我的代码基于直接来自微软的GP2010 Web服务开发人员手册中给出的示例。
发布于 2013-07-09 21:48:32
确保GP中的密钥与web服务中actice目录数据库中的密钥相同。这可能是web服务中缺少的一个关键字。
您需要运行的SQL查询中有关于这方面的技术知识:
发布于 2014-03-24 20:48:06
get company id
SELECT CMPNYNAM, INTERID, CMPANYID
FROM DYNAMICS.dbo.SY01500如果公司id是算术的话,那么就做修复web服务。之后,在IIS中将基本身份验证设置为已启用
在我的例子中,这个解决方案很有帮助。
https://stackoverflow.com/questions/17199548
复制相似问题