如何获取CRM插件中的当前用户记录?

问题描述:

我正在开发一个插件。每当一个插件被调用时,我需要获取当前的用户信息?有什么方法可以检索吗?如何获取CRM插件中的当前用户记录?

该信息在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; 
} 

仅供参考,上下文还有一个“UserId”属性,它可能与InitiatingUserId相同也可能不同。如果您的插件步骤注册“在用户的上下文中运行”字段的值为“呼叫用户”,则它们将是相同的。如果您在“在用户的上下文中运行”字段中指定了用户,那么UserId字段将包含您指定的用户的用户标识,并且InitiatingUserId将是其操作触发该插件的实际CRM用户。听起来你正在寻找InitiatingUserId。

上述答案是正确的。另外请记住,如果您不想在用户上下文中运行插件,还可以从InputEntity中获取修改用户,该用户从任何字段正在更新中传递到插件中。

在没有在用户上下文中运行的情况下,可以执行一项服务。调用调用以获取修改用户的完整记录。