是否可以使用其他用户的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 });
答案 0 :(得分:0)
您可以创建自定义 AIF入站端口并添加AifUserSessionService.GetAccessRights
操作。
您可以在此处设置Allow trusted intermediary to impersonate
。