AX 2012 R3 AIF系统服务另一个用户的Callcontext

时间:2015-06-19 10:10:17

标签: c# dynamics-ax-2012 aif dynamics-ax-2012-r3

是否可以使用其他用户的callcontext来调用AIF系统服务? 我特别需要获取用户有权访问的表。通过使用GetAccessRights中的方法UserSessionService,我可以提取我可以访问的表。 我需要为其他用户调用此功能,因此我尝试将CallContext.LogonAsUser设置为其他用户,但我收到错误消息:

  

未处理的类型' System.ServiceModel.FaultException'   发生在mscorlib.dll

     

其他信息:无法登录Microsoft Dynamics AX。

为了能够在自定义服务上使用LogonAsUser,我需要设置"可信中介用户"在入站端口上。但是,似乎无法在系统服务上设置它。

我在contoso图像上测试它。我以contoso \ Administrator登录。

完整的代码:

USSReference.UserSessionServiceClient client = new USSReference.UserSessionServiceClient();

USSReference.CallContext context = new USSReference.CallContext
{
    LogonAsUser = "VishwaR"
};

USSReference.AccessControlledItemKey key = new USSReference.AccessControlledItemKey();
key.ItemType = USSReference.AccessControlledType.Table;
key.ItemName = "CUSTTABLE";

UserService.USSReference.AccessRight[] rights = client.GetAccessRights(context, new USSReference.AccessControlledItemKey[] { key });

1 个答案:

答案 0 :(得分:0)

您可以创建自定义 AIF入站端口并添加AifUserSessionService.GetAccessRights操作。 您可以在此处设置Allow trusted intermediary to impersonate

Custom AIF service operation