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

时间:2012-04-11 16:13:08

标签: dynamics-crm-2011 dynamics-crm dynamics-crm-online

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

2 个答案:

答案 0 :(得分:16)

该信息可在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。

答案 1 :(得分:3)

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

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