Dar*_*ryl 6 asp.net plugins dynamics-crm c#-4.0 dynamics-crm-2011
在插件上下文中,有两个用户ID,
InitiatingUserId 它返回实际触发插件的用户的id.UserId它返回插件实际运行的用户的用户ID.(这是注册插件时指定的用户,或者调用用户,如果它已注册为主叫用户运行)但我对第三个用户ID感兴趣,该用户ID是执行调用的OrganizationServiceProxy的模拟用户ID.
假设我有一个运行CRM系统管理员帐户的ASP.Net网站,以及对CRM进行的任何调用,使用模拟,查找当前登录到站点的人员的CRM用户ID.
这适用于选择和更新,用户只能看到\更新他们有权使用的权限.但是......如果我创建一个在特定实体更新时触发的插件,如何从插件中查找Asp网站上模拟用户的用户ID?
据我对情况的了解,您可以检索模拟用户的用户 ID,但不能检索经过身份验证的用户。下面列出了一些场景,有望澄清行为(在 UR11 和 UR12 中测试):
ImpersonatingUserId插件步骤设置为null(在插件注册工具中,“在用户上下文中运行”将设置为“调用用户”))。示例将以用户 AOrganizationServiceProxy身份进行身份验证,其中是用户B。
proxyService.CallerIdPluginContext.UserId=用户BPluginContext.InitiatingUserId=用户Bcreatedonbehalfby(或modifiedonbehalfby) =用户 A
OrganizationServiceProxy身份验证的用户 A,其中proxyService.CallerId是用户 B。
PluginContext.UserId=用户CPluginContext.InitiatingUserId=用户Bcreatedonbehalfby(或modifiedonbehalfby) =用户 A场景 #1 让我有点困惑,因为我隐约记得工作方式不同。这必定意味着当CallerId设置该属性时,模拟发生在与场景 #2 不同的位置。然而,您可以看到,在场景#2 中,我们似乎达到了您的预期结果。
我用来产生这个结果的步骤是:
Microsoft.Xrm.Sdk和Microsoft.Crm.Sdk.Proxy. 实例化一个新OrganizationServiceProxy对象,其中经过身份验证的用户是User A。将 设为代表User BCallerId的 Guid 。创建一个超级简单的插件,一旦有机会就会抛出异常,如下所示:
throw new Exception(string.Format("Initiating Id: {0}, User Id: {1}",
context.InitiatingUserId,
context.UserId));
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
4632 次 |
| 最近记录: |