4

我正在开发一个插件。每当调用插件时,我需要获取当前用户信息吗?有没有办法找回它?

4

2 回答 2

18

该信息在 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 字段将包含您指定的人员的用户 ID,而 InitiatingUserId 将是其操作触发插件的实际 CRM 用户。听起来您正在寻找 InitiatingUserId。

于 2012-05-16T21:54:59.747 回答
3

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

在您未在用户上下文中运行的情况下,您可以执行 service.Retrieve 调用以获取修改用户的完整记录。

于 2013-11-22T20:42:56.483 回答