插件中的添加成员团队请求 - 权限延迟



这是 Dynamics CRM 2011 Rollup 11 On-Local with SQL 2008 R2

具有我们尝试调试的以下方案:

在同步 PostCreate 插件中,我们将用户添加到拥有特定记录并通过安全角色对该记录具有读取权限的团队。这应该意味着,当创建过程完成后,添加到团队的用户有权访问记录。当这样的用户随后打开记录时,他们会收到SecurityException ReadAccess错误。记录确实显示在网格中,如果他们对记录没有读取权限,则不应发生这种情况。

作为进一步的测试,我们从控制台应用程序为用户和记录执行 SDK 调用 RetrievePrincipalAccessRequest,并查看用户没有读取权限。

我们可以在 UI 中查看团队成员列表,用户是团队的成员。如果我们等待足够长的时间(并创建另一条记录,问题最终会自行解决 - 几分钟后。

我们可以使用我们在插件中执行的相同代码(但在控制台应用程序中运行)将用户添加到团队中,并且该用户具有读取权限,并且可以在呼叫完成后立即访问记录。

显然,我们的插件中发生了一些导致问题的事情,但我们无法弄清楚是什么或为什么 - 因为 Create 调用完成没有错误,我们可以看到 UI 中列出的用户。我们没有做任何时髦的事情 - 即直接SQL,外部服务等。

我们调用标准 CRM 2011 SDK 消息,它完成而不会引发错误。我们可以验证用户是否已添加到用户界面中。用户有权读取实体,但他们没有。

任何想法/想法??我们一直在疯狂地追踪,但没有找到我们的吸烟枪!

更新

如果您暂停插件

代码,我们可以减少发生率。此错误仅在插件期间完成添加时发生,而不是在插件外部完成时发生。我开始怀疑是否有一个 SQL 过程/语句(有三个存储的过程在将用户添加到团队时触发)由于某种原因被缩短或无法完成,因为添加在没有插件代码中完成时是成功的。

终于在 Rollup 18 解决的项目列表中找到了答案 (http://support.microsoft.com/kb/2958724)

如果您通过插件分配团队成员身份,则用户缓存会 不会失效,在尝试检索 记录。如果团队具有安全角色和访问权限,则会出现此问题 权限通过团队所有权进行控制。

大约 2 个月前,我们开了一张票,其中Microsoft涉及很多来回,但不是最终的修复。

因此,如果您在 CRM 2011 上遇到相同的问题,则需要更新到汇总 18。

最新更新