我开发一个插件。 每当一个插件被调用,我需要获得当前用户的信息? 有什么办法找回吗?
Answer 1:
该信息在PluginExecutionContext可用。 下面的代码是从Execute方法你的插件必须实现。
public void Execute(IServiceProvider serviceProvider)
{
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
Guid userId = context.InitiatingUserId;
}
仅供参考,上下文也有一个“用户ID”的属性,可能会或可能不会是一样的InitiatingUserId。 如果你的插件工序登录“在用户的上下文中运行”字段的值为“主叫用户”,那么他们将是相同的。 如果你指定的“在用户的上下文中运行”域用户,然后用户ID字段将包含您所指定的人的用户ID和InitiatingUserId将是实际的CRM用户,其操作触发该插件。 听起来你正在寻找的InitiatingUserId。
Answer 2:
以上答案是正确的。 也请记住,如果你不希望运行在用户上下文中的插件,你也可以从传递到从任何字段得到更新的插件InputEntity修改用户。
在你没有在用户上下文中运行的情况下,您就可以做一个service.Retrieve呼吁得到修改用户的完整记录。
文章来源: How to get current user record in CRM plugin?