我在插件注册工具中注册了两个插件。这两个插件都有" 呼叫用户"在"在用户环境中运行"值。
第一个插件检索产品,因此触发第二个插件。当我检查第一个插件的 context.UserId 属性时,我找到了登录用户的userId。但在第二个插件中,该属性设置为 SYSTEM用户的Guid。
我使用以下代码在两个插件中实现organisationService:
this.OrganizationService =
factory.CreateOrganizationService(this.PluginExecutionContext.UserId);
知道发生了什么事吗?为什么第二个插件没有被登录用户执行?
编辑:
当我查看系统作业跟踪时,我发现以下ID:
插件1(异步):
context.Initiating User: Logged in user
context.User: SYSTEM
插件2(同步):
context.Initiating User ID: SYSTEM
context.User ID: SYSTEM
Async服务用户(SYSTEM)触发插件2确实有意义,因此插件2中的Context.UserId实际上是SYSTEM用户Guid。
实际上我尝试做的事情(在伪代码中)是这样的(在插件1中):
context.UserId = context.InitiatingUserId
但问题是context.UserId是一个只读属性。
任何想法如何引发这样的事情?
答案 0 :(得分:0)
要根据上面的代码模拟插件,请执行以下操作:
((OrganizationServiceProxy)this.OrganizationService).CallerId = loggedInUserId;