使用 AIF Web 服务连接到 Microsoft Dynamics AX 2009

问题描述 投票:0回答:2

我正在使用 AIF Web 服务连接到 Microsoft Dynamics AX 2009。在 VS2010 中为该服务生成代理,但是当我想使用生成客户端类连接到该服务时,似乎我未在系统中进行身份验证。

我什至尝试添加域用户/密码并使用 Windows 身份验证,如下所示:

var binding = new BasicHttpBinding();
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None;
binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
var address = new EndpointAddress(new Uri("http://dynamicsserver/salesorderservice.svc"));
var client = new SalesOrderServiceClient(binding, address);
client.ClientCredentials.Windows.ClientCredential = new NetworkCredential("admin", "pass", "domain);

默认绑定是 HttpBinding,我正在尝试使用控制台应用程序连接到 AIF,该应用程序使用同一台计算机上 NetworkCredential 中指定的相同帐户运行。

当应用程序连接到网络服务时,我收到以下错误:

System.ServiceModel.FaultException:您无法登录到 Microsoft Dynamics AX.. 错误详细信息:无法登录到 Microsoft Dynamics AX.. 检查 Web 服务器事件查看器以了解详细信息,或联系您的管理员。

服务器堆栈跟踪:
   在System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime操作,ProxyRpc&rpc)
   在 System.ServiceModel.Channels.ServiceChannel.Call(字符串操作、布尔单向、ProxyOperationRuntime 操作、Object[] ins、Object[] outs、TimeSpan 超时)
   在System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage方法调用,ProxyOperationRuntime操作)
   在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage 消息)

在 [0] 重新抛出异常:
   在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)
   在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData,Int32类型)
wcf web-services axapta aif
2个回答
0
投票

您无法登录 Microsoft Dynamics AX。检查网络 服务器事件查看器了解更多信息,或联系您的 管理员。

也许您尚未创建为 AX 用户?

另请检查 Administration\Setup\Security\System 服务帐户,尤其是“业务连接器代理”。

如果全部失败,请检查您的网络服务器的日志或联系您的系统管理员:-)


0
投票

尝试以下方法

        AX ax = new AX();//where AX=YourWebServiceClient

        ax.ChannelFactory.Credentials.UserName.UserName = @"domain\username";
        ax.ChannelFactory.Credentials.UserName.Password = @"password";

        CallContext context = new CallContext();
        context.Company = "YourCompany";

        Console.WriteLine(ax.YourServiceFunction(context));
© www.soinside.com 2019 - 2024. All rights reserved.