可以忽略插件的模拟设置吗?

时间:2014-09-04 13:34:40

标签: dynamics-crm-2011 dynamics-crm

我有一个针对Account实体注册的插件,Assign消息,Post-Operation (stage 40),必须对相关记录执行一些魔术。

我在ADMINISTRATOR下注册了指定Run in User's Context的步骤,因为魔术需要比用户更多的权限:模仿管理员似乎是正确的行动方式。

如果我继续尝试使用"普通"用户(让我们称之为TESTUSER),我发现模仿似乎没有"坚持"。

假设用户看起来像这样:

ADMINISTRATOR - guid AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA
TESTUSER      - guid FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF

这是我在调试插件执行时看到的:

PluginExecutionContext.UserId           -> FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
PluginExecutionContext.InitiatingUserId -> FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF

插件反过来抱怨带有guid FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF的用户缺少一些特权(这是真的,这正是我设置步骤在不同用户中运行的原因&# 39; s上下文,谁拥有这些特权并且应该负责所执行的操作)

我认为如果我将Run in user context设置为Calling User之外的其他内容,那么该插件会冒充其他用户,我错了吗?

我没有包含任何源代码,因为我不相信它的相关性(该插件正在运行,直到由于缺少权限而导致其崩溃,因为它正在运行在错误的用户下......)

1 个答案:

答案 0 :(得分:1)

作为在插件注册工具中指定用户的替代方法,您可以像下面的行一样创建新的服务实例,并使用它来执行需要完全权限的操作:

IOrganizationService adminservice = serviceFactory.CreateOrganizationService(null);

对adminservice方法的所有调用都将以具有管理员权限的SystemUser执行。