Plugins 为什么CRM 2013在线插件一直在系统用户下运行

Plugins 为什么CRM 2013在线插件一直在系统用户下运行,plugins,dynamics-crm,crm,microsoft-dynamics,dynamics-crm-2013,Plugins,Dynamics Crm,Crm,Microsoft Dynamics,Dynamics Crm 2013,我已经为Microsoft Dynamics CRM 2013在线平台构建了一个插件。插件在删除my_custom_实体时注册。它是同步和后期操作的。模拟设置为调用用户。据我所知,该插件应与调用用户的权限等启动这些设置 我不知道为什么,但我的插件总是在“系统”用户下运行。我尝试过使用两个不同的系统用户,但没有任何运气。这是一个问题,因为我的插件正在调用工作流,而工作流正在发送电子邮件。但系统用户无法发送电子邮件 这在CRM 2013中是新事物吗?我试着用谷歌搜索,但找不到任何相关的东西。我已经尝

我已经为Microsoft Dynamics CRM 2013在线平台构建了一个插件。插件在删除my_custom_实体时注册。它是同步和后期操作的。模拟设置为调用用户。据我所知,该插件应与调用用户的权限等启动这些设置

我不知道为什么,但我的插件总是在“系统”用户下运行。我尝试过使用两个不同的系统用户,但没有任何运气。这是一个问题,因为我的插件正在调用工作流,而工作流正在发送电子邮件。但系统用户无法发送电子邮件

这在CRM 2013中是新事物吗?我试着用谷歌搜索,但找不到任何相关的东西。我已经尝试注销并再次注册我的插件程序集。没有区别

如何更改我的插件注册,使其能够代表启动插件(删除实体)的用户运行


谢谢

您是如何获得您的服务参考的

如果你这样做的话,你应该以触发插件的用户的身份执行所有操作

// Obtain the organization service reference.
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
如果传递的是空值,则将获得系统用户,例如,
serviceFactory.CreateOrganizationService()

指定为其调用服务的系统用户。A. 空值表示系统用户。在插件中调用时 Guid.Empty值表示与IPluginExecutionContext相同的用户。 用户ID。在自定义工作流活动中调用时,Guid.Empty值 指示与IWorkflowExecutionContext.UserId相同的用户。任何其他 值表示特定的系统用户


您应该使用context.initialinguserid而不是

IOrganizationService service = serviceFactory.CreateOrganizationService(context.InitiatingUserId);

InitiatingUserId将是触发删除操作的用户。在删除上下文中,用户ID将是平台使用的系统。

您是否尝试使用较旧的插件注册工具?我担心这可能是您正在使用的插件注册的一个bug。如果我有时间,我将与我的在线客户建立一个类似的案例trial@GuidoPreite实际上,我刚刚注意到插件注册工具中有一些奇怪的行为。它不允许我只更改一次模拟。当我重新启动程序时,它允许我再做一次,但只能做一次。我一定会尝试另一个版本,试试看。我会告诉你们我现在使用的插件注册工具,面临的问题是版本6.1.1.1143 64位。我有Windows 8机器(插件注册工具告诉我Windows版本:Microsoft Windows NT 6.2.9200.0 64位),我在插件注册工具使用run as user切换更改时遇到问题。我切换回版本6.1.0.519,一切又开始运转了。如果你有dropbox帐户,给我发封邮件,我会和你分享。我刚下载了6.1.0.519,这对你有点帮助。我现在可以将RunAs user设置为“调用用户”以外的其他值。如果我这样做,一切都很顺利。但若我将“RunAs”设置为调用用户,我的插件就会启动,因为触发它的将是系统用户。我不记得以前有过这个问题。很明显,最新的插件注册工具出现了问题。我真的希望我会在那里犯错误,但没有。我正在获取服务引用,就像您使用context.UserId所说的那样。除此之外,它也无法解释为什么除了“呼叫用户”选项之外,它还能与其他所有选项一起工作?哇!我意识到这与删除消息/事件有关。我试着运行另一个插件,我已经做了完全相同的方式基本上,但它有多个步骤,一个在创建注册,另一个在更新和删除步骤。创建和更新步骤在调用用户下运行良好,但删除步骤在系统用户下执行,即使使用另一个插件…这如何回答问题?