无法使用 SOAP 客户端访问 AIF Web 服务
Unable to access AIF web service using SOAP Client
我创建了一个包含表、data/service 合同 类 以及服务和服务组的测试项目,如下所示:
部署后,我什至可以使用 .Net 控制台应用程序访问和查看 GetEntityList 数据
ServiceReference1.
EntityServiceClient _Client = new ServiceReference1.EntityServiceClient();
ServiceReference1.
CallContext _CallContext = new ServiceReference1.CallContext();
_CallContext.Company =
"dat";
ServiceReference1.
CustomEntityDataContract[] _entityList = _Client.GetEntityList(_CallContext);
// ColorServiceGroup.ColorDC _Dc ;
foreach (ServiceReference1.CustomEntityDataContract _Dc in _entityList)
{
Console.WriteLine(_Dc.EntityName);
}
Console.ReadKey();
问题是我需要使用 SOAP 客户端访问它,尝试创建大量 SOAP 信封消息但无法查看服务数据。
我认为我可能缺少的是 SOAP header 中正确的身份验证标记,我不知道,请指定。
目前我试过的header是这样的:
<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<s:Header>
<a:Action s:mustUnderstand="1">http://schemas.microsoft.com/dynamics/2008/01/services/EntityService/GetEntityList</a:Action>
<h:CallContext i:nil="true" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:h="http://schemas.microsoft.com/dynamics/2010/01/datacontracts" />
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
</s:Header>
<s:Body>
<EntityServiceGetEntityListRequest xmlns="http://tempuri.org" />
</s:Body>
</s:Envelope>
更新:
正如我提到的,我可以使用 .Net 控制台应用程序访问 Web 服务,但是当我执行 Visual Studio 命令行工具 > WCFTestClient > 添加服务时它也不起作用。它不允许在那里添加服务并给出以下错误:
The type or namespace name 'Application' does not exist in the
namespace 'Microsoft.Dynamics.Ax' (are you missing an assembly
reference
任何帮助将不胜感激。
弃用了直接与 SOAP 通信的方法,现在通过添加服务引用成功地将其与 .NET 控制台应用程序一起使用。可以获取、插入记录。
我创建了一个包含表、data/service 合同 类 以及服务和服务组的测试项目,如下所示:
部署后,我什至可以使用 .Net 控制台应用程序访问和查看 GetEntityList 数据
ServiceReference1.
EntityServiceClient _Client = new ServiceReference1.EntityServiceClient();
ServiceReference1.
CallContext _CallContext = new ServiceReference1.CallContext();
_CallContext.Company =
"dat";
ServiceReference1.
CustomEntityDataContract[] _entityList = _Client.GetEntityList(_CallContext);
// ColorServiceGroup.ColorDC _Dc ;
foreach (ServiceReference1.CustomEntityDataContract _Dc in _entityList)
{
Console.WriteLine(_Dc.EntityName);
}
Console.ReadKey();
问题是我需要使用 SOAP 客户端访问它,尝试创建大量 SOAP 信封消息但无法查看服务数据。 我认为我可能缺少的是 SOAP header 中正确的身份验证标记,我不知道,请指定。
目前我试过的header是这样的:
<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<s:Header>
<a:Action s:mustUnderstand="1">http://schemas.microsoft.com/dynamics/2008/01/services/EntityService/GetEntityList</a:Action>
<h:CallContext i:nil="true" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:h="http://schemas.microsoft.com/dynamics/2010/01/datacontracts" />
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
</s:Header>
<s:Body>
<EntityServiceGetEntityListRequest xmlns="http://tempuri.org" />
</s:Body>
</s:Envelope>
更新: 正如我提到的,我可以使用 .Net 控制台应用程序访问 Web 服务,但是当我执行 Visual Studio 命令行工具 > WCFTestClient > 添加服务时它也不起作用。它不允许在那里添加服务并给出以下错误:
The type or namespace name 'Application' does not exist in the namespace 'Microsoft.Dynamics.Ax' (are you missing an assembly reference
任何帮助将不胜感激。
弃用了直接与 SOAP 通信的方法,现在通过添加服务引用成功地将其与 .NET 控制台应用程序一起使用。可以获取、插入记录。